Мне трудно понять, как настроить текущего пользователя в приложении ASP. NET MVC 5, которое использует ASP. NET Идентичность.
Мы используем Интернет Сервис, который инкапсулирует аутентификацию. Функция вызывает эту службу и возвращает токен JWT, который можно «развернуть» для получения ClaimsIdentity
. Насколько я понимаю, все, что вам нужно сделать в этот момент, это вызвать HttpContext.GetOwinContext().Authentication.SignIn()
и передать ClaimsIdentity
, чтобы установить sh текущего пользователя и заставить этого пользователя сохраняться при выполнении запросов.
Однако кажется, это не так. Если я запрашиваю this.User
в контроллере или представлении впоследствии, это анонимный пользователь (this.User.Identity.IsAuthenticated
оценивается в false
). Кроме того, при обновлении страницы или перенаправлении становится очевидным, что текущего пользователя нет (опять же, this.User.Identity.IsAuthenticated
оценивается как false
).
Когда я проверяю личность, полученную из AccountHelper
, все данные есть. Он полностью заполнен именем, идентификатором и полным набором требований.
Так, как правильно установить sh текущего пользователя и заставить его сохраняться при запросах?
// This call authenticates a user with the provided credentials against our user store
// and returns a bearer token and a ClaimsIdentity.
var response = new AccountHelper().AuthenticateUser(credentials);
if (response.IsAuthenticated) // This is true
{
// This comes back with a fully populated identity, as expected.
var claimsIdentity = response.ClaimsIdentity;
// This call has no effect, whatsoever. It doesn't set the current user.
HttpContext.GetOwinContext()
.Authentication
.SignIn(new AuthenticationProperties { IsPersistent = true }, claimsIdentity);