我正在尝试获得有关Microsoft Identity 2.0的干净电子邮件确认。我正在生成电子邮件链接进行确认,但无法正常工作。 我发现,callbackrul上的编码令牌正变为小写,并且我相信这是有问题的。但是我不知道该怎么解决.....
当代码变量获取值时,它看起来像: CfDJ8C5jg3XNISFEoFA015AdmTmmbOmQG / cxNBfdOALg4WM + iU6uf8WeJ13buFIzbdlP3tK3kWU1Q6BwGh / DY7dAYqbj + zz7jXGOK1Y79mtDT2jiEKV4NdaLbfaruzOvoKSVhvg4EFVYPAQRrjcAnOkfCxlff6hMVhIBWHkg8rqv7GBnqXvJ + UbCErqlobIxI69YreNWVTM1Z4lkAYQM2xmwRA // 0T53KNPTWIX52oDc52eFLJAlsWhXI9uHwgfwTt0X9g ==
回调后,它已更改为: cfdj8c5jg3xnisfeofa015admtmmbomqg%2Fcxnbfdoalg4wm%2Biu6uf8wej13bufizbdlp3tk3kwu1q6bwgh%2Fdy7dayqbj%2Bzz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj%2Bubcerqlobixi69yrenwvtm1z4lkayqm2xmwra%2F%2F0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g%3D%3D
在确认操作时,我将解码令牌作为: cfdj8c5jg3xnisfeofa015admtmmbomqg / cxnbfdoalg4wm + iu6uf8wej13bufizbdlp3tk3kwu1q6bwgh / dy7dayqbj + zz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj + ubcerqlobixi69yrenwvtm1z4lkayqm2xmwra // 0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g ==
register.cshtml.cs
的一部分var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
var callbackUrl = Url.Page(
"/Account/ConfirmEmail",
pageHandler: null,
values: new { userId = user.Id, code = codeenc },
protocol: Request.Scheme
);
await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
$"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
confirmemail.cshtml.cs
var user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
return NotFound($"Unable to load user with ID '{userId}'.");
}
var result = await _userManager.ConfirmEmailAsync(user, code);
那我在哪里弄错了?
答案 0 :(得分:0)
我不确定,但是您尝试过这个吗?
code = System.Web.HttpUtility.UrlEncode(code);
答案 1 :(得分:0)
问题出在我的startup.cs文件中,
options.LowercaseQueryStrings = true;
评论令牌正常工作后。