我已經創建了一個用戶並附加了一個具有多個聲明的角色。問題是我沒有看到直接訪問的方式使用實體框架核心和身份集成來檢索它們。這裏是我想要做的理想:如何獲取角色聲明?
return _context.Users
.Include(u => u.Roles)
.ThenInclude(r => r.Role)
.ThenInclude(r => r.Claims)
但是沒有Role屬性,只是RoleId。所以我不能包括角色聲明。當然,我會做一個單獨的查詢來獲得索賠,甚至使用RoleManager:
var user = _context.Users.Single(x => x.Id == ...);
var role = _roleManager.Roles.Single(x => x.Id == user.Roles.ElementAt(0).RoleId);
var claims = _roleManager.GetClaimsAsync(role).Result;
但它看起來效率低下,甚至醜陋。應該有一種方法來進行單個查詢。
我最後的希望是Controller.User屬性(ClaimsIdentity)。我希望能夠巧妙地彙總所有角色的主張。但好像它不...
Controller.User應該工作。這就是我用來檢查當前登錄的會話。您是否正在檢查已登錄的會話,或者您是否想要查找其他用戶? –
我試圖讓它登錄用戶。我也認爲它應該有效,但似乎並非如此。看起來像它只得到User.Claims。 – SiberianGuy
@Mike_G,它似乎是我使用IdentityServer的原因,並且默認情況下它不負責角色聲明。如果我使用其他身份驗證方法,可能會默認檢索角色聲明。 – SiberianGuy