2010-12-09 130 views
0

我有一個使用默認ASP.NET成員資格提供程序的ASP.NET MVC應用程序。阻止用戶訪問應用程序

我的客戶被要求實施阻止用戶登錄的功能(例如,針對辭職和離開公司的用戶)。

我無法使用Membership表的IsApproved標誌,因爲該字段用於確認用戶註冊。

是否有任何內置的功能來做到這一點?你在這樣的場景中有什麼經驗?

+0

您是否在使用帳戶鎖定? – 2010-12-09 02:23:04

+0

@adrift:沒有。我可以使用它們來滿足我的要求嗎? – Lorenzo 2010-12-09 02:30:09

回答

1

由於您未使用帳戶鎖定,因此您可以使用IsLockedOut標誌。如果IsLockedOuttrue,用戶將不能登錄,直到它被清除。

有關如何使用此屬性的更多信息,請參見MembershipUser.IsLockedOut

如果你想避免使用IsLockedOut對於這一點,並且正在使用的SqlMembershipProvider假設,另一種選擇是直接修改該提供商在登錄過程中調用存儲過程:aspnet_Membership_GetPasswordWithFormat

如果您檢查代碼,這個過程中,你會看到,如果用戶不存在或已被鎖定,它返回一個非零結果:

IF (@UserId IS NULL) 
    RETURN 1 

IF (@IsLockedOut = 1) 
    RETURN 99 

你可以維護列表在單獨的表格中阻止用戶,並在此處檢查。缺點是,如果此過程重新創建或者網站切換到新的成員資格數據庫,則這些更改可能會丟失。

在這兩個選項之間,我會選擇使用IsLockedOut,但我認爲我會添加另一個選項以防止以這種方式使用它。

HTH