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