2011-03-13 58 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"); 
    }