ASP.NET Core 5 MVC 自定义CultureProvider中httpContext.User未认证及服务调用问题
问题2:HttpContext.User始终未认证的解决方案
这个问题是中间件执行顺序错误导致的:默认情况下RequestLocalization中间件执行在Authentication中间件之前,你的Provider运行时身份认证逻辑还没执行,自然拿不到已认证的用户信息。
只需要调整Configure方法(或.NET 6+顶层语句)中的中间件顺序,把身份认证、授权中间件放在请求本地化中间件之前即可:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其余前面的中间件(异常处理、静态文件等) // ... // 先执行认证、授权 app.UseAuthentication(); app.UseAuthorization(); // 再执行请求本地化 app.UseRequestLocalization(); // 后面的路由、端点映射等 // ... app.UseRouting(); app.UseEndpoints(endpoints => { ... }); }
调整顺序后,等到你的自定义Provider运行时,身份认证已经完成,HttpContext.User就能拿到正确的已认证信息和对应的语言Claims。
内容的提问来源于stack exchange,提问作者gt.guybrush
相关产品推荐
相关产品推荐

