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

使用ASP.NET Core Identity的ASP.NET Core模板中访问权限是如何限制的?

现有授权规则实现逻辑

你找不到显式的AuthorizeAreaFolder调用,是因为Identity的默认授权规则是在服务注册阶段自动注入的,不需要手动编写配置:

  • 当你调用AddDefaultIdentity<TUser>()或者AddIdentity<TUser, TRole>()注册Identity服务时,组件内部会自动给Identity区域下除/Identity/Account公开路径外的所有页面,全局添加[Authorize]授权要求
    • 你看到的标注了[AllowAnonymous]的页面(比如登录、注册、找回密码、邮箱确认)是官方默认放开匿名访问的刚需页面,单独加了特性豁免全局授权
    • 其余Identity页面(比如个人信息管理、修改密码、双因素认证设置等)默认要求登录访问,这个规则是全局约定配置,不会写在单个页面模型类上
  • 站点根目录的普通Razor页面默认没有全局授权规则,未标注[Authorize]的页面默认允许匿名访问,和你观察到的现象一致。
自定义授权规则方式

如果需要调整授权逻辑,有两种常用实现方案:

  1. 显式覆盖全局授权约定
    在注册Razor Pages服务时手动配置授权规则,优先级高于Identity的默认约定:
services.AddRazorPages()
    .AddRazorPagesOptions(options =>
    {
        // 自定义Identity区域的授权规则,比如给/Manage路径要求已登录
        options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
        // 给自定义文件夹加授权要求,比如指定角色/策略
        options.Conventions.AuthorizeFolder("/Admin", "AdminOnlyPolicy");
        // 给指定页面放开匿名访问
        options.Conventions.AllowAnonymousToPage("/Public/Announcement");
    });
  1. 页面级标注特性
    直接在Razor页面模型类,或者cshtml文件的@page指令下方加[Authorize]/[AllowAnonymous]特性,优先级高于全局约定配置。

内容的提问来源于stack exchange,提问作者Gary McGill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:00