Отличаются ли пользователи в WebApiController и HttpContext.Current.User?
После ссылки на этот пост я написал атрибут для базовой аутентификации Http, который будет использоваться в веб-интерфейсе API. В классе атрибутов, если предоставленные учетные данные совпадают, я устанавливаю HttpContext.Current.User как
HttpContext.Current.User = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});
base.OnActionExecuting(actionContext);
Однако, когда я обращаюсь к Пользователю внутри моего контроллера API, у него нет свойств apiUser.
Почему это так и как правильно установить Identity, а затем получить к нему доступ через api-контроллер?
2 ответа
Нет - вы должны установить оба, к сожалению.
Thread.CurrentPrincipal и HttpContext.User
В приложении ASP.NET Web API вы не должны полагаться на текущие HttpContext
, Что касается ответа на ваш вопрос, установите основной Thread.CurrentPrincipal
это то, что вы хотели бы:
Thread.CurrentPrincipal = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});