Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于ASP策略分配的条件Vue组件呈现_C#_Vue.js_Asp.net Core - Fatal编程技术网

C# 基于ASP策略分配的条件Vue组件呈现

C# 基于ASP策略分配的条件Vue组件呈现,c#,vue.js,asp.net-core,C#,Vue.js,Asp.net Core,我有一个.NET核心后端,由Vue.js前端提供服务 我们有一对多客户-用户关系,希望能够分配一个或多个用户来管理其客户帐户的其他用户 使用Razor视图这很简单,因为我可以简单地使用它 UserManager.IsInRole(“管理员”){//Admin面板按钮在这里}… 并提供一个可点击的按钮,该按钮将指向授权使用的路线 [授权(Roles=“Admin”)] 在运行时,如果您不是正确的角色,Razor视图根本不会编译Admin Panel按钮,但在使用JWT承载令牌和策略时,我很难实现类

我有一个.NET核心后端,由
Vue.js
前端提供服务

我们有一对多客户-用户关系,希望能够分配一个或多个用户来管理其客户帐户的其他用户

使用
Razor
视图这很简单,因为我可以简单地使用它

UserManager.IsInRole(“管理员”){//Admin面板按钮在这里}…

并提供一个可点击的按钮,该按钮将指向授权使用的路线

[授权(Roles=“Admin”)]

在运行时,如果您不是正确的
角色,Razor视图根本不会编译Admin Panel按钮,但在使用
JWT承载令牌
策略
时,我很难实现类似/相同的逻辑

我可以使用
策略
分配授权
路线
行动

 // Startup.cs
options.AddPolicy("User", policy => policy.RequireClaim(JwtConstants.JwtClaimIdentifiers.Rol, JwtConstants.JwtClaims.User));

// Controller.cs
[Authorize(Policy = "User")]
但我很难决定如何根据分配给用户的策略有条件地为管理面板装载Vue组件

在后端,所有内容都经过正确授权,因此如果没有分配
admin
策略,则无法导航或与管理员控件交互,但在前端合理地呈现这一点会造成一些问题

一个简单的解决方案是在成功登录后返回一个对象,例如:

var auth = {
    Jwt: 'xxxxxxxxx',
    Policy: 'Admin'
}

然后将
策略
道具保存在
本地存储
,然后在此基础上挂载管理
组件
,但我想知道是否有更好的方法不会将管理控件公开给可以公开的人(很简单)编辑
LocalStorage

在创建令牌时,可以在jwt中添加与用户相关的信息。

jwt包含与策略相关的信息,这是我可以在
控制器中验证请求的方式,但我不想提供客户端解码器来将其从令牌中解析出来。这样你可以通过反转解码器来伪造JWT。不,在客户端解码令牌是安全的。只需嵌入jwt解码库。