【发布时间】:2020-05-01 18:29:12
【问题描述】:
我正在尝试使用JWT 使用授权中间件设置我的项目。
这里是一个场景示例
我有 3 个模块
-
分析
- 搜索
- 查看
- 保存
-
搜索
- 搜索
- 查看
- 保存
-
管理员
- 仅限管理员
根据我对多个博客的理解,我必须使用Policy 设置中间件,这将代表我的功能Analytics、Search、Admin。然后我用[Authorize(Policy="Analytics")] 装饰控制器,JWT 将针对Analytics 策略进行授权。
问题:
如果我的保单有多个功能,例如Search = 1、View = 2、Save = 3,其中Save 可以同时访问View 和Search 我如何为该保单配置声明并将信息传递到@ 987654334@属性?
services.AddAuthorization((options) =>
{
options.AddPolicy("Analytics", policy =>
{
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
???
???
???
});
});
[Authorize(Policy = "Analytics")]
【问题讨论】:
-
那么你想在模块级别指定访问,还是需要在每个模块的功能级别控制访问?使用 [Authorize(Policy = "Analytics")] 意味着对 Analytics 模块的访问毫无意义。
-
@BryanLewis 如果可能的话,我想指定中间件级别的授权配置。所以,在控制器动作之后,我可以做这样的事情
Authorize(Policy="Analytics", SomethingElse="Search")这个动作将可以访问Analytics模块并且只有搜索功能,但是如果用户有Save功能那么他/她应该能够访问@ 987654340@ 和View
标签: .net asp.net-core jwt