SimpleMmbership与ASP.NET MVC 4中的自定义数据库模式

Zso*_*olt 37 .net asp.net asp.net-membership asp.net-mvc-4 simplemembership

我想启用ASP.NET MVC 4的SimpleMembership API与我自己的数据库模式集成.我在数据库中有一个简单明了的表,Users用这些字段调用:

  • ID
  • 名称
  • 密码
  • 电子邮件
  • 请将isDeleted

我已经配置了SimpleMembership API来使用我的数据库:

WebSecurity.InitializeDatabaseConnection("MyStuff", "Users", "Id", "Name", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)

我也可以插入一个用户:

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, 
                                 new 
                                 { 
                                        IsDeleted = false, 
                                        Email = "sampledata@gmail.com"                
                                 });
Run Code Online (Sandbox Code Playgroud)

但是,密码字段(或它的哈希)没有插入到Users表中(当然),它插入到另一个调用webpages_Membership创建的表中,InitializeDatabaseConnection并且包含了许多我不需要的不必要的信息.

另外,我还有其他自动创建的表格,名为webpages_OAuthMembership,webpages_Roles和webpages_UsersInRoles,我不需要.

我已经尝试将表生成设置为false:

WebSecurity.InitializeDatabaseConnection("MyStuff", "Users", "Id", "Name", autoCreateTables: false);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,CreateUserAndAccount调用将抛出异常,因为它找不到webpages_Membership表.

当我想使用SimpleMembership API时,看起来需要这些表.

我的问题是:当我只想要一个简单的Users表而不是更多时,我应该在这样的场景中做些什么?

我是否必须自己编写整个成员资格处理和身份验证逻辑(哈希码生成等)?

Max*_*Max 11

我向产品团队提出了同样的问题.

SIMPLE会员资格的设计目标是尽可能简单地开箱即用.

因此,就表格而言,实际上没有可能的定制.建议的解决方法是仍然使用ASP.NET成员资格(SqlMembershipProvider).

  • 没有!请不要这样做!:-) (35认同)
  • 没有什么可以阻止您使用EF来获取其他用户数据.http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and- ASP-净-MVC -4- templates.aspx (7认同)

Sha*_*son 10

可以定制.

您可以从CodePlex上的aspnetwebstack项目获取SimpleMembershipProvider的源代码,因为这是在DB Schema和运行时环境之间进行映射的地方,您可以修改此代码以修改/替换模式,语句等以满足您的需求(无需很头疼,国际海事组织.)