如何为ASP.NET Core Empty Template添加User对象获取Windows登录用户
为ASP.NET Core空项目添加Windows用户识别功能
要在ASP.NET Core空项目中获取当前登录的Windows用户,只需启用Windows身份验证并配置必要的中间件,无需复杂的用户管理功能,具体步骤如下:
1. 启用Windows身份验证
修改项目的.csproj文件,添加以下配置,确保启用Windows身份验证并禁用匿名身份验证:
<PropertyGroup> <WindowsAuthentication>true</WindowsAuthentication> <AnonymousAuthentication>false</AnonymousAuthentication> </PropertyGroup>
如果你使用Visual Studio,也可以右键项目→属性→调试→勾选"启用Windows身份验证",同时取消"启用匿名身份验证",效果和手动修改配置文件一致。
2. 配置身份验证中间件
在Program.cs中添加身份验证和授权中间件的配置:
var builder = WebApplication.CreateBuilder(args); // 添加Windows身份验证服务 builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme) .AddNegotiate(); // 添加授权服务 builder.Services.AddAuthorization(); var app = builder.Build(); // 启用身份验证中间件(必须在UseAuthorization之前) app.UseAuthentication(); // 启用授权中间件 app.UseAuthorization(); // 示例端点:返回当前登录用户信息 app.MapGet("/", (HttpContext context) => { var userName = context.User.Identity?.Name; return $"当前登录的Windows用户:{userName}"; }).RequireAuthorization(); app.Run();
3. 获取User对象
配置完成后,你可以在任意授权过的端点、控制器或Razor页面中通过HttpContext.User访问当前登录用户的信息:
- 在端点委托中:直接通过
context.User获取 - 在控制器中:通过
this.User或HttpContext.User获取 - 在Razor页面(如果添加了Razor支持):使用
@User直接在视图中显示,比如@User.Identity.Name
这样配置后,空项目就能自动识别当前登录的Windows用户,无需额外的用户管理模块。
内容的提问来源于stack exchange,提问作者eleethesontai
相关产品推荐
相关产品推荐

