Методы ApplicationUserManager Generate ___ Token

Я вижу, что в ApplicationUserManager есть 5 различных методов создания токена, например:

  • manager.СгенерироватьChangePhoneNumberToken()
  • manager.СгенерироватьEmailConfirmationToken()
  • manager.СгенерироватьPasswordResetToken()
  • manager.СгенерироватьTwoFactorToken()
  • manager.СоздатьUserToken()

В чем смысл GenerateUserToken, когда существуют остальные 4? Когда бы вы использовали только GenerateUserToken, а не какие-либо другие?

Можно ли использовать UserToken из GenerateUserToken вместо остальных 4 для всех возможных задач, запрошенных токенами?

Пытаюсь понять их лучше, но не нахожу большой помощи в поиске. Спасибо!


person SED    schedule 21.07.2017    source источник


Ответы (1)


Если вы посмотрите на исходный код UserManager, вы увидите, что GenerateUserTokenAsync(string purpose, TKey userId) является наиболее логичным. Все остальные методы, о которых вы говорите, являются ярлыками для этого метода с указанным параметром purpose.

Поэтому, когда вам нужно сбросить пароль, вы звоните GeneratePasswordResetTokenAsync(TKey userId), который, в свою очередь, вызывает GenerateUserTokenAsync("ResetPassword", userId).

Этот параметр purpose кодируется в токене и на обратном пути, когда токен проверен, эта цель должна быть такой же, как и при генерации токена. т.е. токен, сгенерированный для сброса пароля, не будет работать для подтверждения по электронной почте.

person trailmax    schedule 23.07.2017