2012-01-05 155 views
0

我開發了MVC web應用程序。現在,我想在其中使用自定義表單身份驗證。 爲了簡單起見,我使用SQL成員資格提供程序進行註冊。但是,我不希望創建其他自定義表和圖籍表,因爲我只需要創建簡單的模塊,我需要堅持自定義窗體身份驗證MVC?

我已經在使用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表,並增加了兩個字段名和姓

現在內部控制器在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

阿樹不濫用代碼標記。僅將它們用於您的代碼。這使得難以閱讀 – 2012-01-05 08:33:37

回答

1

Ashu,在閱讀您的要求之後,我覺得您應該爲自己編寫自定義提供程序,而不是默認默認設置。我之所以這麼說,是因爲您有手頭來實現您的要求的唯一選擇是遵循@Mystere Man的解決方案。

在您的應用程序中創建一個用戶表,並將其主鍵添加到GUID,然後添加您的自定義字段。創建用戶時,向用戶表中插入新記錄並使用從CreateUser返回的MembershipUser的ProviderUserKey。這非常簡單,並且不需要搞亂會員系統。現在

,如果你要與成員資格提供玩,比爲什麼不爲自己的一個全新的提供商。這並不像人們認爲的那樣困難。所有你需要做的就是實現一些抽象類來相應地做一些事情。

網上有大量的教程可以從頭開始構建自定義會員供應商,我在下面列出他們幾個。

+0

非常感謝 – Neo 2012-01-05 10:02:42

2

請勿擴展成員資格表。只是不要這樣做。別。我的意思是。不要這樣做。真。我是認真的。不要這樣做。

取而代之的是,在您的應用中創建一個Users表,將其作爲主鍵作爲GUID並添加您的自定義字段。創建用戶時,向用戶表中插入新記錄並使用從CreateUser返回的MembershipUser的ProviderUserKey。這非常簡單,並且不需要搞亂會員系統。

我知道你說過你不想這樣做,但這是唯一的好辦法。

唯一的另一種選擇是使用配置文件提供程序保存此信息,但是您將無法將其映射到其他任何內容。 Profile提供程序非常通用,大多數人認爲它沒有用處。

如果修改成員資格表,則會破壞事情。正如你發現的那樣,沒有好的方法來處理數據,而無需創建自己的定製提供程序。

+0

解決方案的任何鏈接'在您的應用程序中創建一個用戶表'' ,以便我可以正確遵循? – Neo 2012-01-05 09:25:01