我看到应用程序用户管理器上有 5 种不同的生成令牌方法,例如:
- 经理。GenerateChangePhoneNumberToken((
- 经理。GenerateEmailConfirmationToken((
- 经理。GeneratePasswordResetToken((
- 经理。GenerateTwoFactorToken((
- 经理。GenerateUserToken((
当其他 4 个存在时,生成用户令牌的意义何在?你什么时候只使用GenerateUserToken而不使用其他任何令牌?
是否可以将来自 GenerateUserToken 的用户令牌代替其他 4 个用于所有可能的令牌请求任务?
试图更好地理解这些,但通过搜索没有找到太多帮助。谢谢!
如果你查看UserManager的源代码,你会发现GenerateUserTokenAsync(string purpose, TKey userId)
是逻辑最多的一个。您谈论的所有其他方法是此方法的快捷方式,并指定了参数purpose
。
因此,当您需要重置密码时,您调用GeneratePasswordResetTokenAsync(TKey userId)
,而GenerateUserTokenAsync("ResetPassword", userId)
又调用
。此purpose
参数在令牌中编码,在返回的过程中,当验证令牌时,此目的必须与令牌生成相同。 即为密码重置生成的令牌将不适用于电子邮件确认。