SimpleMembership MVC4(现有数据库)

时间:2013-10-03 14:20:33

标签: asp.net-mvc-4 simplemembership

目前我正在使用MVC4应用程序和数据库。我想使用默认登录和注册过程/方法。

我正在使用包含用户信息的表格,如姓名,姓名,密码,电子邮件......

我只想使用我的数据库使用默认的register / login方法。 在互联网上,我读了几个主题,但没有一个给我一个正确的答案。

这就是我已经做过的事情:

1使用SimpleMembership

所以我补充道:

<add key="enableSimpleMembership" value="true">

2为RegisterModel添加了字段

3也更改CreateUserAndAccount参数:

WebSecurity.CreateUserAndAccount(model.Email, model.Password, new {FirstName = model.UserName, SurName = model.UserName}, false);

这是解决此问题的最佳方法还是有其他解决方案?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

WebSecurity.CreateUserAndAcccount允许您定制如何填充 UserProfile 实体的属性,但您必须更新 UserProfile 类才能使其工作 - 的即装即用。您可以阅读有关customizing SimpleMembership here的更多信息。 UserProfile 是您在创建MVC 4项目时仅使用Internet模板生成的内容时使用的默认实体/表。要使用另一个表,您需要更改WebSecurity.InitializeDatabaseConnection中的参数以指向现有表,并定义用户ID列和用户名列。用户ID必须是整数,以便它可以与SimpleMembership使用的webpages_Membership表连接,以存储散列密码以及身份验证所需的其他信息。

Internet模板生成的代码使用延迟加载方法,使用 InitializeSimpleMembershipAttribute 初始化数据库,您可以在项目的Filters文件夹中找到该方法。这是调用 InitializeDatabaseConnection 的位置。如果开发人员不使用表单身份验证并且应用程序仍然有效,它也会以这种方式实现。如果您使用的是表单身份验证,我更喜欢straight forward method of database initialization described here

SimpleMembership有很多选项,具体取决于您的应用要求,我会给您一些选择。 1)自定义 UserProfile 以获得现有数据库中的属性,如果有任何现有数据,则将其迁移。 2)修改 InitializeDatabaseConnection CreateUserAndAccount 以使用现有表。 3)向 UserProfile 添加一个外键,允许您将SimpleMembership中的用户加入现有表。