gpt4 book ai didi

asp.net-core - 如何获得角色声明?

转载 作者:行者123 更新时间:2023-12-04 11:32:13 24 4
gpt4 key购买 nike

我创建了一个用户,并为他附加了一个具有多项声明的角色。问题是我没有看到使用 Entity Framework Core 和 Identity 集成访问检索它们的直接方法。这是我理想中想做的事情:

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)。我希望它能以某种方式巧妙地汇总所有角色的声明。但是好像没有...

最佳答案

您可以使用类似 SQL 的查询表达式并从用户的所有角色中获取所有声明,如下所示:

var claims = from ur in _context.UserRoles
where ur.UserId == "user_id"
join r in _context.Roles on ur.RoleId equals r.Id
join rc in _context.RoleClaims on r.Id equals rc.RoleId
select rc;

关于asp.net-core - 如何获得角色声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com