更改 AspNetMembershipProvider 中的 MaxInvalidPasswordAttempts
Change MaxInvalidPasswordAttempts in AspNetMembershipProvider
我想根据用户角色更改 MaxInvalidPasswordAttempts
的值。
例如:
If user=="Admin" then MaxInvalidPasswordAttempts =1
If user=="SupervisoR" then MaxInvalidPasswordAttempts =5
我正在使用AspNetSqlMembershipProvider
。
我该如何实施?
您无法在自定义 class 派生的当前上下文中轻松设置默认 MaxInvalidPasswordAttempts
by assigning values to that property, since MaxInvalidPasswordAttempts
is getter property. To set its value, you need to override that property and includes User.IsInRole
方法
来自 SqlMembershipProvider
如下例:
public class CustomMembershipProvider : SqlMembershipProvider
{
public override int MaxInvalidPasswordAttempts
{
get
{
if (HttpContext.Current.User.IsInRole("Admin"))
{
return 1; // example value
}
else if (HttpContext.Current.User.IsInRole("Supervisor"))
{
return 5; // example value
}
// define other roles here
else
{
// use default if no roles provided
return base.MaxInvalidPasswordAttempts;
}
}
}
}
然后在 web.config 中,注册上面创建的自定义 class 的完全限定名称(包括其命名空间)以替换默认值 SqlMembershipProvider
:
<membership ...>
<providers>
<add name="SqlProvider"
type="YourProjectNamespace.CustomMembershipProvider" ... />
</providers>
</membership>
我想根据用户角色更改 MaxInvalidPasswordAttempts
的值。
例如:
If user=="Admin" then MaxInvalidPasswordAttempts =1
If user=="SupervisoR" then MaxInvalidPasswordAttempts =5
我正在使用AspNetSqlMembershipProvider
。
我该如何实施?
您无法在自定义 class 派生的当前上下文中轻松设置默认 MaxInvalidPasswordAttempts
by assigning values to that property, since MaxInvalidPasswordAttempts
is getter property. To set its value, you need to override that property and includes User.IsInRole
方法
来自 SqlMembershipProvider
如下例:
public class CustomMembershipProvider : SqlMembershipProvider
{
public override int MaxInvalidPasswordAttempts
{
get
{
if (HttpContext.Current.User.IsInRole("Admin"))
{
return 1; // example value
}
else if (HttpContext.Current.User.IsInRole("Supervisor"))
{
return 5; // example value
}
// define other roles here
else
{
// use default if no roles provided
return base.MaxInvalidPasswordAttempts;
}
}
}
}
然后在 web.config 中,注册上面创建的自定义 class 的完全限定名称(包括其命名空间)以替换默认值 SqlMembershipProvider
:
<membership ...>
<providers>
<add name="SqlProvider"
type="YourProjectNamespace.CustomMembershipProvider" ... />
</providers>
</membership>