ASP.NET Core 6 MVC登录成功后仍重定向至登录页问题咨询
问题原因及解决方案
核心问题:中间件顺序错误
ASP.NET Core的请求管道执行顺序是严格的,认证中间件必须在授权中间件之前运行。你的代码里把授权中间件放在了认证前面,导致授权逻辑执行时,用户还未完成身份认证,系统会判定用户未登录,进而重复重定向到登录页。
错误的顺序:
app.UseAuthorization(); app.UseAuthentication();
修正后的正确顺序
调整中间件顺序,让认证先执行,再做授权判断:
app.UseRouting(); // 先执行身份认证 app.UseAuthentication(); // 再执行授权校验 app.UseAuthorization(); // 自定义中间件放在授权之后 app.UseAuthenticationCheck();
其他需检查的细节
- ReturnUrl安全处理:直接使用
Redirect(login.ReturnUrl)存在开放重定向风险,建议改用LocalRedirect限制跳转范围为本站URL:if (result.Succeeded) return LocalRedirect(login.ReturnUrl ?? "/"); - 用户身份验证:登录成功后,可以在目标Action中打印
User.Identity.IsAuthenticated,确认用户身份是否已正确写入HttpContext.User。 - Cookie配置确认:当前
ConfigureApplicationCookie的配置无明显冲突,但生产环境需注意Cookie的Secure、SameSite属性是否符合部署环境要求。
内容的提问来源于stack exchange,提问作者MTplus
相关产品推荐
相关产品推荐

