ActionFilterAttribute Identity.Name 中的 IHttpContextAccessor 为 Null

IHttpContextAccessor in ActionFilterAttribute Identity.Name is Null

我在 Api 控制器操作上设置了 AuthorizationFilter,在第一次调用期间设置了用户身份,但在随后的 api 中访问 httpContextAccessor 时请求 User.Identity.Name 为空。

我尝试使用注入将 HttpContextAccessor 设置为单例。

授权过滤代码:

IIdentity identity = _singleSignOnUserService.GetUser(userInfo); _httpContextAccessor.HttpContext.User = new GenericPrincipal(identity, null);

Startup.cs 注入代码:

services.AddScoped<AuthAttribute>();

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

控制器代码:

private readonly IHttpContextAccessor _httpContextAccessor; TesController(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; }

为什么即使 AuthorizeFilter 已设置值,_httpContextAccessor.HttpContext.User.Identity.Name 仍为 null?

我通过在对 Webapi 的客户端请求的 header 中设置授权令牌解决了这个问题,结果发现问题是因为客户端应用程序 - Angular 和核心 Webapi 托管在不同的服务器上域。