Asp.net mvc 3 MVC自定义成员资格提供程序
我有一个自定义的成员资格提供程序,我已经指定在MVC3项目的Asp.net mvc 3 MVC自定义成员资格提供程序,asp.net-mvc-3,membership-provider,Asp.net Mvc 3,Membership Provider,我有一个自定义的成员资格提供程序,我已经指定在MVC3项目的web.config文件中使用它。我假设它将取代内置的成员资格提供程序,因为我这样指定它的用法: <system.web> <membership defaultProvider="CustomMySQLMembershipProvider"> <providers> <clear /> <add connectionStringName="dbCon
web.config
文件中使用它。我假设它将取代内置的成员资格提供程序,因为我这样指定它的用法:
<system.web>
<membership defaultProvider="CustomMySQLMembershipProvider">
<providers>
<clear />
<add
connectionStringName="dbConn"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="25"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/jp2012"
name="CustomMySQLMembershipProvider"
type="NameSpace.CustomMySqlMembershipProvider" />
</providers>
</membership>
</system.web>
有没有一种方法可以让它使用web.config
文件自动覆盖,这样我就不必硬编码我的实现名称?更像这样:
CustomMySqlMembershipProvider membership =
(CustomMySqlMembershipProvider)Membership.Providers["CustomMySQLMembershipProvider"];
MembershipProvider membership = new MembershipProvider();
有什么想法吗?如果您需要更多信息,请告诉我。您的会员资格提供商是您的默认提供商。除非提供程序中有其他功能,否则不需要显式强制转换提供程序
例如,当您调用
Membership.GetUser()
时,它将调用您的成员资格验证程序的GetUser(…)
方法。问题实际上是我如何声明我的成员资格。线路
type="NameSpace.CustomMySqlMembershipProvider"
未指定在其中定义自定义成员资格提供程序的程序集。我右键单击我的项目,选择属性,并从标记为程序集名称的字段中获取程序集名称
因此,如果我的程序集名称是AName
,那么此行应该是
type="NameSpace.CustomMySqlMembershipProvider, AName"
感谢@Eranga尝试帮助我。我如何让它调用我的初始化方法?我在其中有初始化整个实现方法中使用的变量的代码。@JesseBuesking您必须重写初始化(字符串名称,NameValueCollection配置)
才能进行初始化。我已经实现了公共重写void Initialize(字符串名称,NameValueCollection配置)
,但是默认情况下,它目前没有被调用。有什么想法吗?@JesseBuesking它将只被调用一次(因为Asp.Net只保留MembershipProvider的一个实例),并且您可以通过Asp.Net API(例如Membership.GetUser()
)访问您的提供程序,以便调用Initialize
方法。