0

我看到有5个不同的生成上ApplicationUserManager令牌的方法,如:ApplicationUserManager的生成___令牌方法

  • 经理。 GenerateChangePhoneNumberToken()
  • manager。 GenerateEmailConfirmationToken()
  • manager。 GeneratePasswordResetToken()
  • manager。 GenerateTwoFactorToken()
  • manager。 GenerateUserToken()

什么是GenerateUserToken点时,其他4存在吗?你什么时候只使用GenerateUserToken而不是其他的?

对于所有可能的令牌请求任务,是否可以使用GenerateUserToken的UserToken而不是其他4?

试图更好地理解这些,但没有通过搜索找到很多帮助。谢谢!

回答

1

如果你看看UserManager的source code,你会发现GenerateUserTokenAsync(string purpose, TKey userId)是大多数逻辑中的一个。您所谈到的所有其他方法都是指定参数purpose的此方法的快捷方式。

因此,当您需要重置密码时,您可以拨打GeneratePasswordResetTokenAsync(TKey userId),然后调用GenerateUserTokenAsync("ResetPassword", userId)

这个purpose参数被编码在令牌中,并且在返回的时候,当令牌被验证时,这个目的必须与令牌生成相同。即为密码重置生成的令牌不适用于电子邮件确认。