Asp .net core - 通过角色授权访问文件夹中的所有文件

Posted

技术标签:

【中文标题】Asp .net core - 通过角色授权访问文件夹中的所有文件【英文标题】:Asp .net core - Authorize access to all files in a folder via roles 【发布时间】:2021-03-02 08:38:38 【问题描述】:

我正在使用 .net core 5.0 将一些初始 razor 代码升级到 asp .net razor 页面。我已经通过microsoft site 上的许多示例,但似乎我必须在我的所有 .cshtml.cs 文件中设置属性。感觉只是草率且容易出错,因为某些地方会被遗忘。

在 .net 4.x razor 中,我有一个 _PageStart.cshtml 文件,我检查用户的角色,如果他们不是特定角色,我将他们重定向到登录页面。我想使用单个文件或配置在 asp .net 核心中做同样的事情。我不想在每个页面模型文件上都添加一个属性,这看起来很草率。我想我会做这样的事情:

options.Conventions.AuthorizeFolder("/Club", "ClubAdmin");

其中 ClubAdmin 是应用程序中的一个角色,而 Club 是一个包含一堆剃须刀页面和子文件夹的文件夹。这可能吗?

TIA

【问题讨论】:

【参考方案1】:

为此,您可以在 Startup.cs 文件中定义一个检查角色的策略,然后配置 razor 页面为该特定策略授权该文件夹:

//define the admin policy
services.AddAuthorization(options =>

    options.AddPolicy("AdminPolicy", policy => policy.RequireRole("Administrator"));
);

services.AddRazorPages(options =>

    options.Conventions.AuthorizeFolder("/Admin", "AdminPolicy");
);

RequireRole 扩展方法注入一个 RolesAuthorizationRequirement 处理程序,该处理程序将在授权期间验证给定角色

【讨论】:

以上是关于Asp .net core - 通过角色授权访问文件夹中的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口

使用 JWT Token-Asp.net Core Identity 通过 Web API 上的角色声明进行授权

ASP.NET Core按用户角色授权

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 17. 基于Claim和Policy的授权 上

角色动态授权 asp.net core

关于 ASP.NET Core 中的授权