[英]Custom form authentication MVC?
我已經開發了MVC Web應用程序。 現在,我想在其中使用自定義表單身份驗證。 為簡單起見,我使用SQL成員資格提供程序進行注冊。 但是,我不想創建其他自定義表和映射成員資格表,因為我只需要創建簡單的模塊,就需要堅持使用默認表
我已經使用Aspnet_regsql工具生成了SQL成員表
現在,在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表,並添加了另外兩個字段firstname和lastname
現在在AccountController.cs代碼中的Controllers內部:
[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是成員資格的默認方法,因此在創建用戶時我無法將自定義字段(名字和姓氏)插入表中?
我怎樣才能做到這一點?
不要擴展成員資格表。 只是不要這樣做。 別。 我是真的 不要這樣 真。 我是認真的。 不要這樣
而是在您的應用中創建一個Users表,將其主鍵設置為GUID,然后添加您的自定義字段。 創建用戶時,將新記錄插入到用戶表中,並使用從CreateUser返回的MembershipUser的ProviderUserKey。 這非常簡單,不需要弄亂會員系統。
我知道您說過您不想這么做,但這是唯一的好方法。
唯一的其他選擇是使用Profile提供程序來保存此信息,但是您將無法將其映射到其他任何內容。 Profile提供程序非常通用,大多數人發現它沒有那么有用。
如果您修改成員資格表,則會破壞工作。 正如您所發現的那樣,沒有創建自己的自定義提供程序的好方法。
Ashu,在閱讀了您的要求之后,我覺得您應該為自己編寫一個自定義提供程序,而不是堅持使用默認值。 我說這的原因是,您手頭唯一可以滿足要求的選擇就是遵循@Mystere Man的解決方案。
在您的應用中創建一個Users表,將其主鍵設置為GUID,然后添加您的自定義字段。 創建用戶時,將新記錄插入到用戶表中,並使用從CreateUser返回的MembershipUser的ProviderUserKey。 這非常簡單,不需要弄亂會員系統。
現在,如果您要與成員資格提供者一起玩,那么為什么不為自己創建一個全新的提供者。 這並不像人們認為的那么困難。 您需要做的就是實現一些抽象類,以進行相應的處理。
網上有大量教程可用於從頭開始構建自定義成員資格提供程序,我在下面列出了一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.