在ASP.NET Core应用程序中,如果想要使用HttpContext.User来获取已经验证过的用户信息,需要加入认证中间件,并且在ConfigureServices方法中进行配置。例如,使用JWT Token验证身份,需要添加以下代码:
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options => {
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
另外,还需要使用UseAuthentication中间件来验证请求,例如:
app.UseAuthentication();
如果仍然发现HttpContext.User为null,可以检查一下当前请求是否在后面的中间件中被修改了HttpContext。需要在验证之前保存HttpContext,例如:
var context = httpContextAccessor.HttpContext;
var isAuthenticated = context.User.Identity.IsAuthenticated; // 这里会获取到真正的已认证用户
上一篇:ASP.NETCore的GetById中出现错误CS1503-参数1:无法'long”转换为“int”
下一篇:ASP.NetCore的会话状态(sessionstate)是否足够可靠,能否用于存储临界令牌(criticaltoken)?