如何在 ASP.NET MVC 中手動設置使用者角色?
我正在進行的這個項目需要我保留一個本地管理員使用者數據庫,並為普通使用者使用一個外部數據庫。在 admin db 中通過身份驗證的任何人都應分配“admin”角色,通過其他 db 進行身份驗證的任何人將始終分配“user”角色。
我可以手動分配這些角色嗎?我不需要角色提供者或任何東西的複雜性,因為我只使用這兩個角色,這兩個角色總是基於他們認證的數據庫。
如果您可以提供範常式式碼或指向某些文件的連結,那將是一個巨大的幫助。謝謝!
編輯:
目前我沒有使用角色提供者並且創建一個似乎很麻煩。我知道它不是“最佳實踐”,但我只需要在登錄期間分配 2 個角色中的 1 個(這永遠不會改變)。在數據庫中儲存角色資訊也是沒有意義的,因為使用者已經被他們的角色分成了 2 個數據庫。
這是一些虛擬碼:
if (AdminDB.ValidateUser(username,password)==true) { SetAuthCookie(username); AssociateUserWithRole(username, 'admin'); } elseif (UserDB.ValidateUser(username,password)==true) { SetAuthCookie(username); AssociateUserWithRole(username, 'user'); } else { // Login failed. }我不知道它的“ThisSession.AssociateUserWithRole”部分。基本上,使用者經過身份驗證後,我需要告訴 .NET 使用者屬於哪個角色。
實現角色提供者並不是特別難——特別是如果您只實現角色檢查,而不是角色管理。只需實現您需要的那些部分,然後讓其餘部分拋出 NotImplementedExceptions。如果您只有一個應用程序,您也不必太在意該部分。請注意,您需要的部分將取決於框架如何使用它,而不是您將如何使用它。我認為例如,即使您只想檢查它們是否處於特定角色,您也需要實現返回所有使用者角色的位。
也就是說,您可以省略整個 RoleProvider 並在 Session 中完成所有事情。在這種情況下,您將實現自己的AuthorizeAttribute並將其身份驗證和角色檢查位替換為您自己的。一旦通過身份驗證,將使用者的角色儲存在會話中,並使用您的屬性和提供給您裝飾它的方法/類的屬性的參數在那裡檢查它。