我正在調查在ASP.NET(MVC Core 1.0)中使用基於聲明的授權。在設置ClaimsIdentity
時,我提供了一個鍵/值字符串對列表來表示每個Claim
。例如:要求類型的ASP.NET要求
List<Claim> claims = new List<Claim>
{
new Claim("UserID", user.ID),
new Claim("Name", user.Name),
new Claim("Role", "basic")
};
我的理解是我可以使用任何我想要的鍵/值。但我注意到有一些預定義的鍵可通過ClaimsType
class獲得。所以,我可能會使用一些預先定義的鍵而不是:
List<Claim> claims = new List<Claim>
{
new Claim(ClaimTypes.Sid, user.ID),
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Role, "basic")
};
問題:
如果我使用預先定義的按鍵,還有關於實際值的任何規則/限制分配給每個鍵,還是應用程序定義?例如,將數據庫主鍵保存在
ClaimTypes.Sid
中,還是ASP.NET對於ClaimTypes.Sid
應該包含哪些內容有一定的期望?是否有任何
ClaimTypes
即要求,還是完全取決於應用程序來決定包含或不包含?我想,答案可能取決於我將與之交互的特定第三方身份驗證服務,但如何處理不包含任何第三方身份驗證的自包含ASP.NET項目的簡單情況。 ASP.NET本身是否有任何要求?
任何有關使用特定鍵/值的要求和/或最佳實踐的鏈接將不勝感激。
感謝有關身份的信息。我目前沒有使用身份,但這可能會改變。我現在正在使用EF6和MVC Core 1(因爲EF7太不完整),並且Identity似乎與EF7交織在一起,並且需要[跳過某些環節](http://stackoverflow.com/a/33962018/333127)與EF6一起工作,所以我暫時擱置。 – cbranch