2011-03-13 48 views
8

编码平台:ASP.NET 4.0 Webforms与C#如何锁定用户使用表单身份验证

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

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

我的问题是,

  1. 如何锁定的表单认证用户?
  2. 为什么MembershipUser.IsLockedOut Property设置为ReadOnly?
  3. 这是不是正确的方式LockOut 人作为管理员?从MSDN

回答

5

这里有讨论几个选择:代替http://forums.asp.net/t/1435151.aspx

他们使用IsApproved(设置)改变IsLockedOut到碴与基础的SQL数据库设置锁定标志。

+0

感谢您的链接。它几乎涵盖了选项。 – naveen 2011-03-13 07:15:55

+1

男人 - 微软有时候非常愚蠢,他们的框架。 – Flea 2013-12-21 20:10:24

3

摘录:

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

如果您使用GetPasswordResetPassword过载来接受密码答案,并且用户输入的错误答案的数量达到成员身份的值,也可以锁定用户。 MaxInvalidPasswordAttemptsMembership.PasswordAttemptWindow之内。

一种解决方法可以是使用IsApproved属性是这样的:

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

@yetanothercoder ..我看到它后..但它是不存在之前,我COMMITED我的编辑。 :( – 2011-03-13 05:30:50

+0

没有probs :)和是的..我想我必须去!被批准。 – naveen 2011-03-13 05:33:10

+0

祝你好运... :) – 2011-03-13 05:35:08

3

你可以把它做锁定用户(设置.IsLockedOut为true)以下内容:

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