Отличаются ли пользователи в 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[] {});
Другие вопросы по тегам