如何使用表单身份验证锁定用户

发布于 2024-10-21 08:38:05 字数 552 浏览 2 评论 0原文

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

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

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

我的问题是,

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

Coding Platform: ASP.NET 4.0 Webforms with C#

I have two roles admin and member.
In my application, admin can manipulate most of the member data.
I know that in forms authentication a user can be unlocked like,

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

My questions are,

  1. How to lock a user in forms authentication?
  2. Why is MembershipUser.IsLockedOut
    Property
    set as ReadOnly?
  3. Is it not the right way to LockOut
    people as an administrator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不气馁 2024-10-28 08:38:05

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

他们从使用 IsApproved(可设置)而不是 IsLockedOut 到修改底层 SQL 数据库来设置锁定标志。

There are a few options discussed here: http://forums.asp.net/t/1435151.aspx

They vary from using IsApproved (settable) instead of IsLockedOut to mucking with the underlying SQL database to set the lockout flag.

旧人 2024-10-28 08:38:05

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

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

You can make it lock the user (set .IsLockedOut to true) by doing the following:

    MembershipUser user = Membership.GetUser("UserToLock");        
    for (int i = 0; i < Membership.MaxInvalidPasswordAttempts; i++)
    {
        Membership.ValidateUser(user.UserName, "Not the right password");
    }
春庭雪 2024-10-28 08:38:05

摘自MSDN:

通常情况下,当 PasswordAttemptWindow 内达到 MaxInvalidPasswordAttempts 时,用户将自动LockedOut

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

解决方法可能是使用 IsApproved 属性,如下所示:

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

Excerpt from MSDN:

Normally, User's are LockedOut automatically when the MaxInvalidPasswordAttempts is reached within the PasswordAttemptWindow.

Users can also be locked out if you use the GetPassword or ResetPassword overload that accepts a password answer and the number of bad answers entered by the user reaches the value of Membership.MaxInvalidPasswordAttempts within the Membership.PasswordAttemptWindow.

A workaround could be to use IsApproved property like this:

MembershipUser user = Membership.GetUser();
user.IsApproved = false;
Membership.UpdateUser(user);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文