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

.NET 8应用未授权用户未被重定向至指定未授权页面问题求助

.NET 8应用未授权用户未被重定向至指定未授权页面问题求助

看起来你遇到了.NET 8应用里授权规则不生效的麻烦——未授权用户直接访问需要权限的页面(比如Home/Welcome)时,居然能直接打开,完全没被重定向到UnAuthorized页面。我帮你梳理了代码里的几个关键问题,你可以逐一排查修复:

  • 中间件顺序错误(核心问题)
    ASP.NET Core对中间件的执行顺序要求很严格,你当前的Program.cs里中间件顺序不符合规范,这会直接导致会话、认证功能无法正常工作。正确的顺序应该是:

    1. 环境相关配置(比如UseHsts)
    2. 异常处理中间件
    3. 静态文件中间件
    4. 路由中间件
    5. 认证中间件
    6. 会话中间件(必须在UseRouting之后、UseAuthorization之前)
    7. 授权中间件
    8. 端点映射

    修正后的Program.cs相关代码片段:

    var app = builder.Build();
    
    if (app.Environment.IsProduction()) // HSTS一般用于生产环境,开发环境不建议启用
    {
        app.UseHsts();
    }
    
    app.UseExceptionHandler("/Home/Error");
    app.UseStaticFiles();
    app.UseRouting();
    
    app.UseAuthentication();
    app.UseSession(); // 调整到正确的位置
    app.UseAuthorization();
    
    // 后续的端点映射代码...
    
  • Cookie认证配置不完整
    你只设置了未认证用户的跳转LoginPath,但对于已认证但无权限的用户,还需要指定AccessDeniedPath;另外建议补充Cookie的安全配置,适配生产环境要求。修改AddCookie的配置:

    builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.LoginPath = "/Home/UnAuthorized"; // 未认证用户跳转路径
                options.AccessDeniedPath = "/Home/UnAuthorized"; // 已认证但无权限的跳转路径
                options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 生产环境强制HTTPS
                options.SlidingExpiration = true; // 滑动过期,自动延长会话有效期
            });
    
  • SignInAsync调用不规范
    在HomeController的POST方法里,你调用SignInAsync时既没加await,也没明确指定认证方案,这会导致认证会话无法正确创建。修改代码:

    await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
    
  • POST方法返回值错误
    你在POST方法的if (!string.IsNullOrEmpty(url))分支里写了return("Welcome");,这会直接返回字符串"Welcome"而不是跳转到Welcome页面,应该修改为:

    return RedirectToAction("Welcome");
    

修改完这些点后,记得重启应用并清除浏览器缓存(避免旧Cookie干扰),再测试未授权访问Home/Welcome的情况,应该就能正常重定向到UnAuthorized页面了。

备注:内容来源于stack exchange,提问作者Rahul Aggarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:03:00