【问题标题】:SimpleMembership MVC4 (existing database)SimpleMembership MVC4(现有数据库)
【发布时间】:2013-10-03 14:20:32
【问题描述】:

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

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

我只想将我的数据库与默认的注册/登录方法一起使用。 在互联网上我阅读了几个主题,但没有一个给我正确的答案。

这是我已经做过的:

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);

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

提前谢谢你!

【问题讨论】:

  • 您是否定义并应用了InitializeSimpleMembershipAttribute?您需要在某个地方致电WebSecurity.InitializeDatabaseConnection(...)。提示:另见stackoverflow.com/questions/13030074/…

标签: asp.net-mvc-4 simplemembership


【解决方案1】:

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

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

SimpleMembership 有很多选项,具体取决于您的应用程序要求,我将只为您提供一些。 1) 自定义 UserProfile 以拥有您现有数据库中的属性,如果您有任何现有数据,请将其迁移过来。 2) 修改 InitializeDatabaseConnectionCreateUserAndAccount 以使用您现有的表。 3) 向 UserProfile 添加一个外键,这将允许您将 SimpleMembership 中的用户加入到现有表中。

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多