在我的.Net Core 3.1项目中,有时候令牌是无效的。
根据这条线索:确认电子邮件上的ASP.NET核心标识令牌无效
我按照说明操作,因此我将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);
为什么我的应用程序有时接受这些令牌,有时不接受?
请帮帮我...
1条答案
按热度按时间ni65a41a1#
你必须创建这样的链接: