【问题标题】:Custom form authentication MVC?自定义表单身份验证 MVC?
【发布时间】:2012-01-05 06:52:30
【问题描述】:

我开发了 MVC 网络应用程序。现在,我想在其中使用自定义表单身份验证。 为简单起见,我使用 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 的控制器中 代码:

[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 是默认的成员资格方法,所以我无法在创建用户时将自定义字段(名字和姓氏)插入表中?

我该怎么做?

【问题讨论】:

  • 阿舒不要滥用代码标记。仅将它们用于您的代码。它使阅读变得困难

标签: asp.net-mvc asp.net-mvc-3 model-view-controller


【解决方案1】:

不要扩展成员资格表。只是不要这样做。不。我是认真的。不要这样做。真的。我是认真的。不要这样做。

相反,在您的应用中创建一个用户表,将其作为 GUID 的主键,然后添加您的自定义字段。创建用户时,将新记录插入用户表并使用从 CreateUser 返回的 MembershipUser 的 ProviderUserKey。这非常简单,不需要搞乱会员系统。

我知道你说过你不想这样做,但这是唯一的好方法。

唯一的其他选择是使用配置文件提供程序来保存此信息,但是您无法将其映射到其他任何内容。 Profile 提供程序非常通用,大多数人认为它没有那么有用。

如果你修改成员表,你会破坏事情。正如您所发现的,如果不创建自己的自定义提供程序,就没有处理数据的好方法。

【讨论】:

  • 您的解决方案的任何链接“在您的应用程序中创建用户表..”以便我可以正确遵循?
【解决方案2】:

Ashu,在阅读了您的要求后,我觉得您应该为自己编写一个自定义提供程序,而不是坚持使用默认值。我这么说的原因是,您可以满足您的要求的唯一选择是遵循@Mystere Man 的解决方案。

在您的应用中创建一个用户表,将其作为 GUID 的主键,然后添加您的自定义字段。创建用户时,将新记录插入用户表并使用从 CreateUser 返回的 MembershipUser 的 ProviderUserKey。这非常简单,不需要搞乱会员系统。

现在,如果您要与会员提供商一起玩,为什么不为自己创建一个全新的提供商。这并不像人们想象的那么难。你需要做的就是实现一些抽象类来拥有相应的东西。

网上有大量教程可用于从头开始构建自定义会员提供程序,我在下面列出了其中的几个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2013-09-06
    相关资源
    最近更新 更多