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

ASP.NET Core 5 MVC 角色授权跳转AccessDenied报404错误如何解决

问题原因

/Account/AccessDenied是ASP.NET Core OpenID Connect认证方案的默认权限不足跳转路径,你使用的AddMicrosoftIdentityWebApp默认继承了该配置,无需手动配置就会自动跳转。
你之前配置的UseExceptionHandler仅用于处理服务端运行时抛出的未捕获异常,不覆盖认证授权流程的跳转逻辑,所以不生效。

解决方法

修改ConfigureServices中的认证配置,通过ConfigureCookieAuthentication手动指定权限不足的跳转路径即可:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
         .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))
         // 新增以下配置
         .ConfigureCookieAuthentication(options =>
         {
             // 自定义权限不足(403)跳转路径
             options.AccessDeniedPath = "/Error/AccessDenied";
             // 可选:自定义未登录(401)跳转路径
             // options.LoginPath = "/你的自定义登录页路径";
         });
            
services.AddAuthorization();

注意事项

  • 记得给/Error/AccessDenied对应的PageModel添加[AllowAnonymous]特性,保证未授权用户也可以访问该页面,避免出现循环跳转问题。
  • 角色校验不通过属于403权限不足,和401未登录是两种状态,对应的跳转路径分开配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:03