【问题标题】:Restricting folder access by role in Razor Pages在 Razor Pages 中按角色限制文件夹访问
【发布时间】:2021-11-06 11:27:02
【问题描述】:

我一直在搜索和搜索,但无法得到直接的答案。 (我找到的大部分答案都已经过时了。)

看起来我可以使用页面类上的Authorize 属性来限制对剃须刀页面的访问。

[Authorize(Roles = "Admin")]

但是,使用当前版本的 Razor Pages,如何限制整个文件夹或 区域

【问题讨论】:

  • 您的意思是您的文件夹中有许多 Razor 页面,并且您想为所有这些页面添加基于角色的身份验证,并且最好在文件夹中添加授权吗?
  • this document 能帮到你吗?我的意思是AuthorizeFolderAuthorizeAreaPage

标签: c# asp.net-core razor-pages .net-5


【解决方案1】:

按策略名称授权文件夹

services.AddRazorPages()
    .AddRazorPagesOptions(ops =>
    {
        ops.Conventions.AuthorizeFolder("MyFolder", "RequireAdmins");
    });

添加基于角色的策略

services.Authorization(ops =>
{
    ops.AddPolicy("RequireAdmins", policy => policy.RequireRole("Admins"));
});

【讨论】:

  • 这很令人沮丧,因为这些东西似乎随着每个次要版本而改变。这就是为什么我很难找到正确的文档。我现有的代码没有调用AddRazorPages()。对于 .NET 5,IServiceCollection 没有 Authorization() 方法。啊!
【解决方案2】:

令人沮丧的是,这些东西似乎会随着每个版本的发布而改变。这使您很难知道您是否正在查看正确的文档。

但这似乎是最新版本所需的方法,它适用于我。

ConfigureServices()

services.AddAuthorization(options =>
{
    // Create policies
    options.AddPolicy("Staff", p => p.RequireRole(Role.Staff));
    options.AddPolicy("Admin", p => p.RequireRole(Role.Admin));
});

// Set authorizations
services.AddRazorPages(options =>
{
    // Requires staff role for all pages (not including areas)
    options.Conventions.AuthorizeFolder("/", "Staff");

    // Set authorization for areas (looks like no way to do all areas at once)
    options.Conventions.AuthorizeAreaFolder("Admin", "/", "Admin");
    options.Conventions.AuthorizeAreaFolder("Leasing", "/", "Staff");
    options.Conventions.AuthorizeAreaFolder("Repair", "/", "Staff");
    options.Conventions.AuthorizeAreaFolder("Storage", "/", "Staff");
    options.Conventions.AuthorizeAreaFolder("Transloading", "/", "Staff");

    // Anonymous pages
    options.Conventions.AllowAnonymousToPage("/Index");
    options.Conventions.AllowAnonymousToPage("/Error");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多