簡體   English   中英

如何在MVC SimpleMembership中鎖定/解鎖用戶

[英]How to lock/unlock a user in MVC SimpleMembership

在SimpleMembership中,數據庫中沒有用於鎖定/解鎖用戶的列。 我基本上需要我的管理員來啟用或禁用我的應用程序中的任何用戶。 有沒有其他選擇?

我發現使用角色最容易做到這一點。 擁有ActiveUser角色並使用Authorize屬性標記您的控制器或操作。

[Authorize(Roles = "ActiveUser")]

然后一些簡單的管理員在角色中添加或刪除用戶以解鎖並鎖定他們對受該角色屬性保護的所有內容的訪問權限。

Roles.AddUserToRole(user.Username, "ActiveUser");

Roles.RemoveUserFromRole(user.Username, "ActiveUser");

我還沒有嘗試過簡單的會員,但這對於我正在進行的一些小項目來說聽起來很棒。 以下是一些選項:

選項1 :向表格添加自定義字段,如下所示 - http://www.dwdmbi.com/2012/10/adding-custom-fields-to-vs2012-mvc4.html

選項2使用外鍵創建一個新表,返回給用戶。 對此值進行額外檢查。

無論哪種方式,你都會去檢查一些額外的東西。 您可以自定義“授權”屬性以包括您的檢查(此處的說明 - 覆蓋ASP.NET MVC中的授權屬性 )。

可能不是“批准”的做事方式,但這就是我做的方式。

webpages_Membership表中有一個名為IsConfirmed的字段 通常,這適用於您需要2階段注冊過程的時間:注冊然后通過電子郵件中的鏈接激活。 但就本質而言,此字段與前aspnet_Membership表中的IsApproved具有相同的效果 :如果設置為true,則用戶可以登錄; 如果錯誤他們不能。 所以我只使用普通的舊SQL設置為true或false:

// If using EntityFramework
// 1. Setup my params
var params = new List<SqlParameter>() { 
      new SqlParameter("@UserID", 1),
      new SqlParameter("@Activate", true) // or false
};

SqlParameter[] paramArray = params.ToArray();

// 2. Update the database
myDbContext.Database.ExecuteSqlCommand("UPDATE webpages_Membership SET IsConfirmed = @Activate WHERE UserId = @UserID", paramArray);

嘗試這種方法。 它使用IsApproved而不是IsLockedOut。 如果您的實現尚未使用IsAproved,這將是一個很好的解決方案。

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

這並不完全鎖定用戶。 從技術上講,此呼叫正在從用戶處獲得批准狀態,並使他們無法登錄。

我不知道你正在使用的技術,但要么你必須在表中給列鎖定解鎖,或者在數據庫中添加一個表(Say tlbDisable),你可以刪除原始表中的條目並將其插入新的表(tlbDisable)。

當您再次想要啟用該用戶時,只需從tlbDisable中刪除該條目並將其插入到原始用戶表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM