You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor Pages中如何按角色限制整个文件夹或Area的访问权限

Razor Pages 文件夹/Area 全局访问权限限制实现方案

以下方案适用于.NET Core 3.1及以上(包含.NET 6/7/8)的当前版本Razor Pages,为官方推荐实现方式

方案1:通过Program.cs配置授权约定(推荐)

无需逐个页面添加[Authorize]属性,直接在服务注册阶段统一配置规则即可。

限制指定文件夹下所有页面

builder.Services.AddRazorPages(options =>
{
    // 限制Pages/Admin文件夹下所有页面仅Admin角色可访问
    options.Conventions.AuthorizeFolder("/Admin", "Admin");
    // 仅要求登录即可访问,不限制角色/策略的写法
    options.Conventions.AuthorizeFolder("/MemberOnly");
    // 单独排除文件夹下的某一页面,允许匿名访问
    options.Conventions.AllowAnonymousToPage("/Admin/Login");
});

参数说明:

  • 第一个参数为Razor Pages根目录(默认是项目下的Pages文件夹)的相对路径
  • 第二个可选参数为需要匹配的角色名或授权策略名

限制指定Area下所有页面

builder.Services.AddRazorPages(options =>
{
    // 限制名为Dashboard的Area下所有页面仅Admin角色可访问
    options.Conventions.AuthorizeAreaFolder("Dashboard", "/", "Admin");
    // 排除Area下的指定页面允许匿名访问
    options.Conventions.AllowAnonymousToAreaPage("Dashboard", "/Login");
});

参数说明:

  • 第一个参数为Area的名称
  • 第二个参数为Area内Pages目录的相对路径,传/即代表整个Area下的所有页面
  • 第三个可选参数为需要匹配的角色名或授权策略名

方案2:通过_ViewImports.cshtml配置

如果偏好基于文件层级的配置方式,可以在目标文件夹/Area的Pages目录下新增_ViewImports.cshtml文件,添加如下内容:

@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin")]

该配置会自动应用到同级及子级所有的Razor Page页面,若子目录存在单独的_ViewImports.cshtml,会覆盖上层配置。

内容的提问来源于stack exchange,提问作者Jonathan Wood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:00:03