电子邮件确认 - 无效的令牌

时间:2021-03-02 09:37:10

标签: asp.net asp.net-core .net-core asp.net-core-mvc asp.net-core-3.1

在我的 .Net Core 3.1 项目中,有时令牌无效,如错误所述。

根据这个线程:ASP.NET Core Identity invalid token on confirmation email

我按照说明进行操作,因此我已将 SendConfirmationLink 操作更改为如下所示:

var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
byte[] tokenGeneratedBytes = Encoding.UTF8.GetBytes(code);
var codeEncoded = WebEncoders.Base64UrlEncode(tokenGeneratedBytes);

var callbackURLRoute = Url.Action("RegisterStandartUser", "Account", new
                       {
                           userId = user.Id,
                           token = codeEncoded
                       });

var callbackURL = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{callbackURLRoute}";

await _mailService.SendConfirmationMailToStandartUser(user, callbackURL);

在此邮件成功发送给用户后,一些用户可以确认他们的帐户,但其中一些用户收到此错误消息。

服务器端的错误是 Invalid Token

我的 RegisterUser 操作(链接重定向到)如下:

 var user = await _userManager.FindByEmailAsync(model.Email);
 if (user == null) { throw new Exception("Cannot find user!"); }

var codeDecodedBytes = WebEncoders.Base64UrlDecode(model.EmailToken);
var codeDecoded = Encoding.UTF8.GetString(codeDecodedBytes);

var emailConfirm = await _userManager.ConfirmEmailAsync(user, codeDecoded);

为什么我的应用程序有时接受而有时不接受这些令牌?

请帮帮我...

0 个答案:

没有答案