我们在asp.net mvc4互联网模板中创建了一个CustomSimpleMembershipProvider,如此
public class MySimpleMembershipProvider : SimpleMembershipProvider {
public override bool RequiresUniqueEmail {
get { return true; }
}
}
但是使用它似乎是个谜。
所以问题是 - 在asp.net mvc4中SimpleMembershipProvider的接线在哪里以及如何更改它?
答案 0 :(得分:1)
它连接在web.config中。如果使用Internet模板创建了条目,则应该在web.config中有一个条目,如下所示。
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
您需要将会员资格条目更改为以下内容:
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="MyAssembly.MyNamespace.MySimpleMembershipProvider, MyAssembly" />
</providers>
</membership>
但是创建自己的继承自SimpleMembershipProvider的提供程序可能不是实现目标的最佳方式。 SimpleMembership易于自定义,无需将提供程序修改为demonstrated in this article。您还可以指定该电子邮件用于WebSecurity.InitializeDatabaseConnection method的身份。我不确定覆盖RequiresUniqueEmail会给你想要的结果。请看decoupling SimpleMembership from MVC上的这篇文章。如果采用这种方法,您可以使用EF中的流畅API来确保电子邮件是唯一的。
答案 1 :(得分:0)
主要注册是通过以下方法执行的:
WebSecurity.InitializeDatabaseConnection
(编辑) 不确定您是否真的查看了链接,但这是您连接您的连接名称,表名称和列的位置。它没有web.config条目的原因是默认情况下已经启用了Simple Membership,你只需要调用这个方法来激活它。
public static void InitializeDatabaseConnection(
string connectionStringName,
string userTableName,
string userIdColumn,
string userNameColumn,
bool autoCreateTables
)
如果您想构建自己的提供者,您仍需要按照旧方式注册。此链接可能有所帮助: