我有一个由Vue.js
前端提供服务的.NET Core后端。
我们拥有一对多的“客户与用户”关系,并且希望能够分配一个或多个用户来管理其他用户的客户帐户。
使用Razor
视图很简单,因为我可以简单地使用
UserManager.IsInRole("Admin") { // admin panel button here }...
并提供一个可点击的按钮,该按钮将指向使用进行授权的路线
[Authorize(Roles = "Admin")]
。
在运行时,如果您使用的Role
不正确,则Razor视图根本不会编译“管理面板”按钮,但是我在使用{{ 1}}和JWT Bearer Token
。
我可以使用Policy
分配来授权Routes
或Actions
:
Policy
但是我正在努力决定如何基于分配给用户的策略有条件地为管理面板安装Vue组件。
在后端,所有内容均已正确授权,因此,在未分配 // Startup.cs
options.AddPolicy("User", policy => policy.RequireClaim(JwtConstants.JwtClaimIdentifiers.Rol, JwtConstants.JwtClaims.User));
// Controller.cs
[Authorize(Policy = "User")]
策略的情况下,您无法导航或与管理控件进行交互,但是在前端上明智地呈现此策略会带来一些麻烦。
一种简单的解决方案是在成功登录后立即返回一个对象,例如:
Admin
然后将var auth = {
Jwt: 'xxxxxxxxx',
Policy: 'Admin'
}
道具保存在Policy
中,然后基于此挂载admin LocalStorage
,但是我想知道是否有更好的方法不会公开Admin控制可以(简单地)编辑Component
的人?
答案 0 :(得分:1)
创建令牌时,可以在jwt中添加与用户相关的信息。