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

ASP.NET Core MVC登录成功跳转后User.Identity为null问题

问题原因

核心问题是中间件配置缺失+顺序错误。
ASP.NET Core Identity的身份认证流程依赖UseAuthentication()中间件:只有该中间件执行时,才会读取请求携带的身份认证Cookie,解析声明信息填充HttpContext.User对象,后续的授权逻辑、控制器、视图中才能通过User属性拿到已登录用户的信息。
你当前的中间件管道只配置了UseAuthorization(),完全没有添加UseAuthentication()中间件,所以即使登录成功Cookie已经正常下发到浏览器,后续跳转的请求携带Cookie到达服务端时,没有组件负责解析Cookie填充用户身份,User.Identity下的所有属性自然都会返回null。

修复方法

调整中间件管道配置,严格按照顺序在UseRouting()之后、UseAuthorization()之前补充app.UseAuthentication();配置,修正后的中间件代码如下:

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

// 补充认证中间件,顺序不可调换:必须先完成身份认证,再执行权限校验
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

额外注意:你当前登录代码中PasswordSignInAsync的第一个参数传入的是用户邮箱,而该方法默认要求第一个参数为用户的UserName字段值。如果注册用户时UserName和邮箱不一致,会出现登录失败、或者后续User.Identity.Name取值和预期邮箱不符的问题,建议登录时先通过邮箱查询到对应用户对象,再传入用户名执行登录操作,不过该问题不会导致User.Identity.Name为null。

修改完成后重启应用,重新登录即可在控制器和布局页中正常获取到登录用户信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:06:28