繁体   English   中英

在 ASP.NET Core 3 (3.0) SPA (Angular) 中如何正确检查用户角色?

[英]In ASP.NET Core 3 (3.0) SPA (Angular) how to properly check for user roles?

我一直在寻找如何在 SPA 中使用角色,Visual Studio (2019) 创建的基本项目非常好,但是[Authorize(Roles="")]无法正常工作,因此我可以使用 Authorize 属性来检查用户是否实际登录而不是角色。

我现在在控制器中的方法是获取用户并使用IsInRole() ,但这似乎是一个很大的开销,因为我应该已经拥有他应该包含角色的令牌。

ClaimsPrincipal currentUser = this.User;
var currentUserId = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;
User user = await _userManager.FindByIdAsync(currentUserId);

if (await _userManager.IsInRoleAsync(user, "Admin"))
...

你应该坚持原来的[Authorize(Roles="")]属性。

如此处所述: 存储/分配经过身份验证的用户的角色

角色被添加到 HttpContext 的 IPrincipal 中。 您可以创建一个 GenericPrincipal,解析构造函数中的角色列表并将其设置为 HttpContext.User。 然后可以通过 User.IsInRole("role") 或 [Authorize(Roles="role")] 属性访问 GenericPrincipal

根据您的身份验证方案,您需要创建一个 GenericPrincipal 并在那里为所有请求添加角色,以便它们可以被访问。

FormsAuthentication 的示例在提到的答案中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM