【问题标题】:Asp .net core - Authorize access to all files in a folder via rolesAsp .net core - 通过角色授权访问文件夹中的所有文件
【发布时间】: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

【问题讨论】:

    标签: asp.net-core asp.net-core-razor-pages


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多