【问题标题】:How to lock user using forms authentication如何使用表单身份验证锁定用户
【发布时间】:2011-07-14 08:13:59
【问题描述】:

编码平台:使用 C# 的 ASP.NET 4.0 Webforms

我有两个角色 admin 和 member。
在我的应用程序中,管理员可以操作大部分成员数据。
我知道在表单身份验证中,可以像这样解锁用户,

            MembershipUser user = Membership.GetUser(clickeduserName);
            user.UnlockUser();
            Membership.UpdateUser(user);

我的问题是,

  1. 如何在表单身份验证中锁定用户?
  2. 为什么MembershipUser.IsLockedOut Property 设置为只读?
  3. 这不是锁定的正确方法吗 管理员?

【问题讨论】:

    标签: c# asp.net webforms forms-authentication


    【解决方案1】:

    摘自 MSDN:

    通常,当在PasswordAttemptWindow 内到达MaxInvalidPasswordAttempts 时,用户的自动为LockedOut

    如果您使用接受密码答案的GetPasswordResetPassword 重载并且用户输入的错误答案的数量达到Membership.Membership.PasswordAttemptWindow 中的值Membership.MaxInvalidPasswordAttempts,用户也可能被锁定.

    一种解决方法是像这样使用 IsApproved 属性:

    MembershipUser user = Membership.GetUser();
    user.IsApproved = false;
    Membership.UpdateUser(user);
    

    【讨论】:

    • @yetanothercoder .. 我后来看到了.. 但在我提交编辑之前它并不存在。 :(
    • 没有问题 :) 是的.. 我想我必须选择 !IsApproved。
    【解决方案2】:

    这里讨论了几个选项:http://forums.asp.net/t/1435151.aspx

    从使用 IsApproved(可设置)而不是 IsLockedOut 到使用底层 SQL 数据库设置锁定标志,它们各不相同。

    【讨论】:

      【解决方案3】:

      您可以通过执行以下操作使其锁定用户(将 .IsLockedOut 设置为 true):

          MembershipUser user = Membership.GetUser("UserToLock");        
          for (int i = 0; i < Membership.MaxInvalidPasswordAttempts; i++)
          {
              Membership.ValidateUser(user.UserName, "Not the right password");
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多