簡體   English   中英

自定義表單身份驗證MVC?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM