我想根据用户角色更改MaxInvalidPasswordAttempts
的值。
举个例子:
If user=="Admin" then MaxInvalidPasswordAttempts =1
If user=="SupervisoR" then MaxInvalidPasswordAttempts =5
我正在使用AspNetSqlMembershipProvider
。
我该如何实现?
答案 0 :(得分:0)
您无法通过为该属性分配值来轻松设置默认MaxInvalidPasswordAttempts
,因为MaxInvalidPasswordAttempts
是 getter 属性。要设置其值,您需要覆盖该属性,并在派生的自定义类中包含当前上下文中的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中,注册上面创建的自定义类的完全限定名称(包括其名称空间)以替换默认SqlMembershipProvider
:
<membership ...>
<providers>
<add name="SqlProvider"
type="YourProjectNamespace.CustomMembershipProvider" ... />
</providers>
</membership>