环境
- ASP.Net核心5.0
- Blazor WebAssembly应用程序(Asp.Net核心托管)
- Asp.Net核心标识(带有标识服务器4)
问题
我想在服务器端和客户端之间使用基于角色的授权。
我可以正确登录,并且UserManager.IsInRoleAsync(user, "admin")
在服务器端返回True。
但是@attribute [Authorize(Roles = "admin")]
和<AuthorizeView Roles="admin">
在客户端都不起作用,并且User.Identity.IsInRole("admin")
在客户端返回False。
如何在客户端获取用户角色?
代码
服务器.csproj
第一个
客户端.csproj
第一个
1条答案
按热度按时间yjghlzjz1#
目前有two accepted ways处理此问题。
"第一次“
1通过调用AddRoles将身份配置为使用角色
2配置身份服务器以将角色声明放入ID令牌和访问令牌中,并阻止JwtSecurityTokenHandler中角色的默认Map。
3在您的blazor应用上使用[Authorize(Roles =“admin”)]或您的应用定义的任何其他角色。
4在受保护的资源API上使用[Authorize(Roles =“admin”)]或应用定义的任何其他角色。
"第二次“
1在客户端上添加类以配置选项.UserOptions.RoleClaim
2修改Program.cs文件以调用ApiAuthorizationOptionsConfiguration并配置角色声明。