2012-01-05 156 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