1

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

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

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

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

TIA

4

1 回答 1

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处理程序,该处理程序将在授权期间验证给定角色

于 2020-11-19T03:23:48.230 回答