ApplicationUserManager 的生成 ___ 令牌方法

ApplicationUserManager's Generate ___ Token methods

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

当其他 4 个存在时,GenerateUserToken 有什么意义?您什么时候只使用 GenerateUserToken 而不是其他任何一个?

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

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

如果您查看 UserManager 的 source code,您会发现 GenerateUserTokenAsync(string purpose, TKey userId) 是最有逻辑的。您谈论的所有其他方法都是此方法的快捷方式,并指定了参数 purpose

因此,当您需要重设密码时,您调用 GeneratePasswordResetTokenAsync(TKey userId),后者又调用 GenerateUserTokenAsync("ResetPassword", userId)

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