1

我已經開始開發一個新的ASP.NET MVC-App,我想使用ASP.NET Identity 2進行用戶管理。我想擺脫角色,因爲我認爲這絕對不是必需的,特別是如果我想到這種方式,ASP.NET Identity會在幕後處理角色:作爲聲明。 (請糾正我,如果我在這裏是錯誤的)Customize IdentityUser without Roles

我有兩個信息關於這個問題:This official Microsoft-Documentation指出,只需要實現所需的功能,如果開箱即用的方法不符合所有要求。其他信息是,必須從Microsoft.AspNet.Identity.EntityFramework.IdentityUser派生自定義用戶。但IdentityUser實現了IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>

從我的角度來看,這些信息並不是真正兼容的,因爲如果我從這個IdentityUser派生出來,我將把所有這些東西放到我的CustomUser-Implementation中,無論我是否需要它。

還有一件事我想知道:據我瞭解身份架構,主要有兩個部分:商店和經理。管理器與應用程序和商店耦合,而商店與管理器和存儲器耦合。

存儲接口和我預期的一樣靈活。也許我應該從這裏開始 - 但我仍然不知道如何創建一個CustomUser作爲實體,它來自IdentityUser,沒有任何對角色的引用。任何人都可以告訴我我的問題是什麼?

我在這個問題上發現的唯一的stackoverflow問題是 here。但我不相信,這是一種遵循的方法。

+0

你可以使用ASP.NET Core嗎? – Win

+0

你想擺脫角色,但你想要回報什麼? –

+0

我不明白這種渴望擺脫那些並不真正在路上的東西。如果你不需要角色 - 不要使用它們。是的,你的數據庫中會有2個表格。所以呢?這些表格將是空的,幾乎不會佔用任何空間(現在存儲空間很便宜)。努力去解決它們會浪費時間,而且不是很成功。 – trailmax

回答

2

嗯,首先,你不能真正擺脫角色。你可以選擇不使用它們,但你仍然會有一個AspNetRoles表。當角色功能被烘烤時,沒有辦法擺脫這種情況。身份是可擴展的,因爲您可以自定義和擴展角色,但關係不可移除。微軟的文檔本身並沒有錯,在這裏,本身;這可能不完全清楚。如果您不想使用角色,則不必實施任何基於角色的功能。換句話說,您不必創建管理角色,爲用戶分配角色或驗證用戶是否具有特定角色的功能。但是,這並不意味着核心角色功能不再存在於身份中:只是您可能會選擇不使用它。

其次,角色實際上是需要的,至少如果您有任何願意擁有基於權限的訪問控制。如果每個登錄用戶都可以執行任何其他登錄用戶的操作,那麼角色可能不是必需的,但是如果有任何功能是特定於某個用戶子集的,那麼您需要角色。另外,角色不是聲稱,儘管他們的功能與聲明一樣。不過,身份有一個單獨的「索賠」概念。

+0

首先,感謝您的回答!我有一個需要經典角色的應用程序。但是,對於「角色」也不可能採用基於索賠的方法嗎?我讀過,不推薦混合這兩種方法..角色至少不夠靈活,而且成本較低,不是嗎? – Joshit

+1

開箱即用,它們可能不夠靈活,但你可以用足夠多的努力幾乎賦予你喜歡的任何能力。身份的每個部分都是可擴展的。索賠更具靈活性,因爲沒有固有的用例。你可以使用它們,但是你需要使用它們並將它們塑造成你的意願。不過,我個人認爲忽略現有角色系統並不是一個好主意,而是在債權背後推出自己的角色系統。你不僅會得到重複的功能,而且你還要爲此負責所有的邏輯。 –