【问题标题】:Change MaxInvalidPasswordAttempts in AspNetMembershipProvider更改 AspNetMembershipProvider 中的 MaxInvalidPasswordAttempts
【发布时间】:2018-02-22 14:53:41
【问题描述】:

我想根据用户角色更改MaxInvalidPasswordAttempts 的值。 举个例子:

If user=="Admin" then MaxInvalidPasswordAttempts =1 
If user=="SupervisoR" then MaxInvalidPasswordAttempts =5

我正在使用AspNetSqlMembershipProvider

我该如何实现?

【问题讨论】:

    标签: asp.net-mvc webforms asp.net-membership


    【解决方案1】:

    您不能通过为该属性赋值来轻松设置默认MaxInvalidPasswordAttempts,因为MaxInvalidPasswordAttemptsgetter 属性。要设置它的值,您需要覆盖该属性并在派生的自定义类中包含来自当前上下文的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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多