ASP.NET Core项目模式下如何获取httpContext.User.Identity.Name?
解决ASP.NET Core项目模式下Windows身份验证获取用户信息的问题
1. 启用Windows身份验证中间件
在Program.cs中添加Windows身份验证相关的服务和中间件配置:
var builder = WebApplication.CreateBuilder(args); // 注册Windows身份验证服务(使用Negotiate方案) builder.Services.AddAuthentication(Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults.AuthenticationScheme) .AddNegotiate(); // 设置默认授权策略,要求用户必须经过身份验证 builder.Services.AddAuthorization(options => { options.FallbackPolicy = options.DefaultPolicy; }); var app = builder.Build(); // 启用身份验证中间件(注意要放在UseAuthorization之前) app.UseAuthentication(); app.UseAuthorization(); // 其他业务中间件配置... app.Run();
2. 配置项目启动参数
打开项目根目录下的Properties/launchSettings.json,在项目启动配置中启用Windows身份验证并关闭匿名访问:
"profiles": { "你的项目名称": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "https://localhost:5001;http://localhost:5000", "windowsAuthentication": true, "anonymousAuthentication": false } }
3. 本地开发环境权限确认
- 确保当前开发使用的Windows账户具备访问该应用的权限
- 若遇到Kerberos相关问题,可尝试以管理员身份启动Visual Studio,或在本地主机配置SPN(开发环境一般无需额外操作)
完成以上配置后,启动项目即可正常获取HttpContext.User.Identity.Name的值。
内容的提问来源于stack exchange,提问作者Mark C
相关产品推荐
相关产品推荐

