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

ASP.NET Core Identity本地调试登录成功跳转后未登录问题

问题根因

问题出在ASP.NET Core 请求管道的中间件配置错误,缺失认证中间件且顺序不符合要求,和登录表单、Cookie生成、脚手架生成的页面逻辑没有关系。
ASP.NET Core 3.1 采用端点路由后,身份相关中间件的执行顺序有严格强制要求:路由匹配完成后,必须先执行认证中间件,解析请求携带的身份Cookie、填充HttpContext.User的身份信息,之后才能执行授权中间件做权限校验,最后才会进入具体的页面/接口逻辑。
查看你贴的Startup.cs配置,UseRouting()之后直接调用了UseAuthorization(),完全漏掉了app.UseAuthentication()这一步,才会出现你观测到的现象:

  • 调用PasswordSignInAsync时登录逻辑正常执行,日志记录登录成功,身份Cookie也被正确写入响应
  • 但重定向到首页发起的新请求,没有任何中间件负责读取、解析携带的身份Cookie,User对象始终保持未认证的空状态
  • 最终_LoginPartial里的SignInManager.IsSignedIn(User)永远返回false,表现为登录后仍显示未登录
修复方法

调整Configure方法中的中间件顺序,在UseRouting()和UseAuthorization()之间插入app.UseAuthentication()调用,修正后的管道配置代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   if (env.IsDevelopment())
   {
      app.UseDeveloperExceptionPage();
   }

   app.UseHttpsRedirection();
   app.UseStaticFiles();
   app.UseSession();

   app.UseRouting();
   // 新增以下代码,注意位置不能放错:必须在UseRouting之后,UseAuthorization之前
   app.UseAuthentication();
   app.UseAuthorization();

   app.UseEndpoints(endpoints =>
   {
      endpoints.MapControllerRoute(
         name: "default",
         pattern: "{controller=Home}/{action=Index}/{id?}");
      endpoints.MapRazorPages();
   });
}
验证方式

修改完成后重启应用,重新走登录流程即可恢复正常:重定向到首页时,认证中间件会自动解析请求携带的Identity身份Cookie,填充用户身份信息,登录状态判断、用户名称展示都会正常生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:57:20