如何通过角色授权访问文件夹中的所有文件

问题描述 投票:0回答:1

我正在使用 .net core 5.0 将一些初始 razor 代码升级到 asp .net razor 页面。我已经在 Microsoft Learn 上查看了许多示例,但似乎我必须在所有 .cshtml.cs 文件中设置属性。这感觉很草率并且容易出错,因为有些东西会被遗忘在某个地方。

在 .NET 4.x Razor 语法中,我有一个 _PageStart.cshtml 文件,我检查用户的角色,如果他们不属于特定角色,我会将他们重定向到登录页面。我想使用单个文件或配置在 asp .net core 中执行相同的操作。我不想在每个页面模型文件上放置一个属性,这看起来很草率。我想我会做这样的事情:

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

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

asp.net-core razor-pages
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.