Зачем входить в систему нового пользователя при использовании ASP.NET Core Identity и аутентификации на основе токенов? - PullRequest
1 голос
/ 28 апреля 2019

Я использую ASP.NET Core с удостоверениями и JWT. Об этом не так много информации, так как документы не охватывают идентификацию с помощью JWT, а только с помощью файлов cookie.

Примеры здесь и в блогах обычно делают это при регистрации пользователя:

// ...other stuff within the controller
var result = await _userManager.CreateAsync(user, password);
if (result.Succeeded) {
  await _signInManager.SignInAsync(user, false);     // <--- ???
  return await generateJwt(email, user);
}

Я ожидал, что после создания пользователя больше ничего не нужно делать (кроме возврата jwt). Предполагается, что аутентификация на основе токенов позволяет избежать состояния на стороне сервера.

Так, какова цель использования _signInManager.SignInAsync Identity? Это необходимо?

1 Ответ

2 голосов
/ 29 апреля 2019

Так какова цель использования идентификатора _signInManager.SignInAsync?

Этот вызов является тонкой оболочкой для вызова HttpContext.SignInAsync, который выглядит как this :

await Context.SignInAsync(IdentityConstants.ApplicationScheme,
    userPrincipal,
    authenticationProperties ?? new AuthenticationProperties());

Со всеми настройками по умолчанию, созданными путем вызова, например, AddIdentity, в результате информация аутентификации сохраняется в файле cookie с именем Identity.Application.

Это необходимо?

В среде, где вы не используете аутентификацию на основе файлов cookie, в этом нет необходимости. Вы сохраняете информацию аутентификации, используя JWT, поэтому вам не нужно устанавливать cookie.

...