在我的 .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);
为什么我的应用程序有时接受而有时不接受这些令牌?
请帮帮我...