.NET Core发布项目随机跳转Account/Login,是否为Startup中间件配置错误?
问题排查结论
你的代码存在三处会触发该随机跳转问题的错误:
- 多余的无参数
services.AddAuthentication()调用AddIdentity<AppUser, AppRole>方法内部已经完成了认证服务注册、默认认证方案配置,你在AddIdentity之后额外调用无参的AddAuthentication()会重置已有的认证配置,导致部分请求触发身份验证挑战时,没有加载你自定义的ConfigureApplicationCookie中设置的/Home/SignIn登录路径,而是回退到Identity默认的/Account/Login路径。 - Identity默认UI/路由残留
如果你安装了Microsoft.AspNetCore.Identity.UI包,或者手动Scaffold生成了Identity的Razor Pages页面,你代码中注册的AddRazorPages()和MapRazorPages()会自动映射/Account/*相关路由,部分未指定自定义登录路径的逻辑会直接跳转默认地址。 - SameSite配置触发Cookie拦截
你配置了SameSiteMode.Strict的Cookie策略,跨站请求、从第三方跳转、收藏夹打开站点等场景下,Cookie会被浏览器拦截,导致后台判定用户未登录触发跳转,这也是问题随机出现的核心原因之一。
修复方案
- 直接删除
AddIdentity配置块之后的services.AddAuthentication();这行冗余代码 - 若你不需要使用Identity内置的账号相关UI,可以将
AddIdentity替换为AddIdentityCore,或删除手动Scaffold生成的Areas/Identity目录下的账号相关页面 - 若存在跨站访问需求,将
options.Cookie.SameSite = SameSiteMode.Strict调整为SameSiteMode.Lax,避免正常跳转场景下Cookie被拦截 - 确认错误页、登录页、静态资源相关的路由都添加了
[AllowAnonymous]特性,避免中间件异常拦截
内容的提问来源于stack exchange,提问作者wdafoe666
相关产品推荐
相关产品推荐

