Asp.net-Core

Asp.net Core Identity 使用 AspNetUserClaims 還是 AspNetRoleClaims?

  • May 17, 2018

我仍然對所有這些身份的東西感到困惑。 

首先,我仍然對角色、政策/聲明之間的區別感到困惑。從我讀到的角色是舊的做事方式,並且是為了向後兼容而保留的,那麼這是否意味著 AspNetRoleClaims 是這種向後兼容性的一部分?

我想我理解聲明和政策時考慮到他們個人,就像政策基本上是一組必須通過的規則,並賦予更改規則的能力,而無需遍歷所有程式碼和更改角色。

如果是索賠,則基本上是一個受信任的來源為該使用者提供擔保(即這是他們的年齡,可能來自政府來源)。

現在讓我感到困惑的是把它們放在一起。

我生成了身份表並查看

AspNetUsers
AspNetUserRoles
AspNetRoles
AspNetRoleClaims
AspNetUserClaims
AspNetUserLogins

我得到了 AspNetUsers 表的作用和 AspNetUserLogins(如果它們像外部登錄提供程序一樣使用)。

我對 AspNetRoleClaims 和 AspNetUserClaims 之間的區別感到困惑。我是只使用 AspNetUserClaims 還是使用所有東西?

說我有這種情況

我有一家公司,有很多分支機構,在每個分支機構中,他們都將成為該分支機構的管理員,他們對分支機構擁有完全的權力,並且可以在另一個分支機構做任何事情,但不能做任何事情。在公司級別會有一個管理員,他可以在公司級別和任何分支機構做任何事情。最後,我在分支機構中有一個人可以添加新員工。

這一切看起來像什麼?我做3個角色嗎?

CompanyAdmin
BranchAdmin
AddUsersAtBranchLevel (or is this some sort of claim??)
What do the tables look like? Is there anything going to be in AspNetRoleClaims? AspNetUserClaims?

現在我可以製定一個策略來檢查使用者是否是分支管理員以及他們是否正在嘗試編輯他們的分支?

還是我只是忘記了所有角色的東西並在 AspNetUserClaims

User1   CanAddUserToBranch true
User1 CanDeleteUserBranch true
User1 CanAddUserToCompany true

然後在我的程式碼中創建所有不同的“ClaimTypes”並創建一個策略,看看他們是否說“CanAddUserToBranch”,然後另一個聲明或策略來檢查他們所在的分支,以確保他們正在嘗試向正確的分支添加一些東西?

編輯

你認為我需要使用基於資源的授權嗎?

+------------------+------------------+
|      Table       |   Description    |
+------------------+------------------+
| AspNetUsers      | The users.       |
| AspNetRoles      | The roles.       |
| AspNetUserRoles  | Roles of users.  |
| AspNetUserClaims | Claims by users. |
| AspNetRoleClaims | Claims by roles. |
+------------------+------------------+
  • 角色是分配給使用者的東西。

    • 例如。簡是一名管理員。
  • 聲明是使用者聲明的東西。

    • 例如。簡的出生日期是 1990 年 10 月 1 日。
  • 角色聲明是角色聲明的聲明。

    • 例如。管理員可以訪問儀表板。

如果您發現角色和聲明令人困惑,可能是因為角色是聲明的特例,即角色是聲明。

角色與政策

  • 對於基於角色的授權,授權系統檢查是否已為使用者分配了訪問給定資源所需的角色。

    • 例如:只有具有管理員角色的使用者才能訪問儀表板。
  • 對於基於策略的授權,執行一些業務邏輯來決定是否應該授權資源訪問。

    • 例如:只有 40 歲以上的管理員才能訪問財務數據。

說我有這種情況

我有一家公司,有很多分支機構,在每個分支機構中,他們都將成為該分支機構的管理員,他們對分支機構擁有完全的權力,並且可以在另一個分支機構做任何事情,但不能做任何事情。在公司級別會有一個管理員,他可以在公司級別和任何分支機構做任何事情。最後,我在分支機構中有一個人可以添加新員工。

這是一種方法:

2 個角色: AdminTheRoleThatCanAddUsers

一個Branch可以使用分支 id(或其他任何標識分支的內容)的聲明。公司管理員可以使用類似"CompanyWide"or0或的值-1

現在創建一個策略來檢查角色和分支聲明並決定是否應該授權使用者。

引用自:https://stackoverflow.com/questions/50401190