2012-01-05 10 views
0

Я разработал веб-приложение MVC. Теперь я хочу использовать аутентификацию пользовательской формы. Для простоты я использую поставщик членства в SQL для регистрации. Но я не хочу, чтобы создать другую пользовательские таблицы и членство карты таблицы, потому что я просто необходимо создать простой модуль мне нужно придерживаться таблиц по умолчаниюПользовательская аутентификация формы MVC?

Я сгенерированная SQL таблицы членства, используя Aspnet_regsql инструмент

В настоящее время в AccountModel.cs в RegisterModel классе я добавил еще два поля, как:

public class RegisterModel 
{ 
    [Required] 
    [Display(Name = "User name")] 
    public string UserName { get; set; } 

    [Required] 
    [Display(Name = "First name")] 
    public string FirstName { get; set; } 

    [Required] 
    [Display(Name = "Last name")] 
    public string LastName { get; set; } 
} 

также обновленную таблицу dbo.aspnet_Membership и добавил еще два поля Имя и Фамилия

Теперь внутри Контроллеры в AccountController.cs код:

[HttpPost] 
public ActionResult Register(RegisterModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // Attempt to register the user 
     MembershipCreateStatus createStatus; 
     Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 
    } 
} 

Здесь, как CreateUser по умолчанию метод членства, так что я не в состоянии вставить свои собственные поля (имя и фамилия) в таблицу в момент создания пользователя?

Как я могу это сделать?

+0

Ашу не злоупотребляйте маркеров кода. Используйте их только для своего кода. Это затрудняет чтение –

ответ

1

Ashu, после прочтения ваших требований, я чувствую, что вы должны пойти с кодированием пользовательского поставщика для себя, а не придерживаться стандартного. Причина, по которой я говорю это, заключается в том, что единственный вариант, который у вас есть для достижения ваших требований, - это решение @Mystere Man.

создать таблицу пользователей в вашем приложении, сделать ее основным ключом GUID и добавить свои настраиваемые поля. Когда вы создаете пользователя, вставьте новую запись в таблицу users и используйте ProviderUserKey члена MembershipUser, возвращенного из CreateUser. Это чрезвычайно просто и не требует возиться с системой членства.

Теперь, если вы собираетесь играть с поставщиком членства, почему бы не сделать совершенно нового поставщика для своих собственных. Это не так сложно, как думают люди. Все, что вам нужно сделать, это реализовать некоторые абстрактные классы, чтобы иметь вещи соответственно.

Есть тонны учебника, доступного онлайн для создания пользовательского поставщика членства с нуля, и я перечисляю их несколько ниже.

+0

Большое вам спасибо – Neo

2

Не расширяйте таблицы членства. Только не делай этого. Не. Я имел в виду это. Не делай этого. В самом деле. Я серьезно. Не делай этого.

Вместо этого создайте таблицу пользователей в своем приложении, сделайте ее основным ключом GUID и добавьте свои настраиваемые поля. Когда вы создаете пользователя, вставьте новую запись в таблицу users и используйте ProviderUserKey члена MembershipUser, возвращенного из CreateUser. Это чрезвычайно просто и не требует возиться с системой членства.

Я знаю, что вы сказали, что не хотите, но это единственный хороший способ сделать это.

Единственной альтернативой является использование Профильного провайдера для сохранения этой информации, однако вы не сможете сопоставить ее ни с чем другим. Поставщик профиля довольно общий, и большинство людей считают, что это не так полезно.

Если вы измените таблицы членства, вы сломаете вещи. И нет никакого способа справиться с данными, как вы выяснили, без создания собственного пользовательского провайдера.

+0

любой ссылки для вашего решения «создайте таблицу Users в вашем приложении ..» , чтобы я мог правильно следовать? – Neo