gpt4 book ai didi

c# - 检查身份电子邮件 token 有效性

转载 作者:行者123 更新时间:2023-11-30 23:00:18 26 4
gpt4 key购买 nike

我有一个 .net 核心应用程序,我在注册后创建了一个电子邮件 token ,然后通过电子邮件发送它。这个想法是,用户可以在客户端应用程序中使用该电子邮件 token ,我想检查它的有效性(如果它过期,它是否是与给定电子邮件关联的正确 token )。

我试图在 userManager 中找到我可以使用的任何方法。我发现的是 VerifyUserTokenAsync(ApplicationUser user, string tokenProvider, string purpose, string token) 但我不知道在参数中传递什么。

所以,任何人都可以帮助tokenProvider目的我想提一下,电子邮件 token 是使用 GenerateEmailConfirmationTokenAsync 生成的。我可以使用 ConfirmEmailAsync 检查 token ,如果结果不成功,则 token 无效,但如果 token 有效,我不想将 EmailConfirmed 设置为 true。

最佳答案

解决这个问题的一个有用方法是查看 implementation ConfirmEmailAsync 的:

public virtual async Task<IdentityResult> ConfirmEmailAsync(TUser user, string token)
{
// ...
if (!await VerifyUserTokenAsync(user, Options.Tokens.EmailConfirmationTokenProvider, ConfirmEmailTokenPurpose, token))
{
return IdentityResult.Failed(ErrorDescriber.InvalidToken());
}
// ...
}

正如预期的那样,ConfirmEmailAsync 调用 VerifyUserTokenAsync。传入此方法的第二个和第三个参数(tokenProviderpurpose)是使用 UserManager 类本身的属性提供的。再看源码,很明显 OptionsConfirmEmailTokenPurpose 都是公开的:

public const string ConfirmEmailTokenPurpose = "EmailConfirmation";
// ...
public IdentityOptions Options { get; set; }

考虑到所有这些,您可以像这样调用 VerifyUserTokenAsync:

await userManager.VerifyUserTokenAsync(
userYouAlreadyHave,
userManager.Options.Tokens.EmailConfirmationTokenProvider,
userManager.ConfirmEmailTokenPurpose,
tokenYouAlreadyHave);

如果此调用返回 true,则 token 有效。

关于c# - 检查身份电子邮件 token 有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com