简体   繁体   English

为什么我的电子邮件确认令牌无效?

[英]Why my email confirmation token is invalid?

I'm trying to get clean emailconfirmation on Microsoft Identity 2.0. 我正在尝试在Microsoft Identity 2.0上获得干净的电子邮件确认。 I'm generating email link for confirmation and it's not working. 我正在生成电子邮件链接进行确认,但无法正常工作。 I found, that encoded token on callbackrul is changing to lowercase and I believe that there is a problem. 我发现,callbackrul上的编码令牌正变为小写,并且我相信这是有问题的。 But I don't know how to solve it..... 但是我不知道该怎么解决.....

When code variable gets value it looks like: CfDJ8C5jg3XNISFEoFA015AdmTmmbOmQG/cxNBfdOALg4WM+iU6uf8WeJ13buFIzbdlP3tK3kWU1Q6BwGh/DY7dAYqbj+zz7jXGOK1Y79mtDT2jiEKV4NdaLbfaruzOvoKSVhvg4EFVYPAQRrjcAnOkfCxlff6hMVhIBWHkg8rqv7GBnqXvJ+UbCErqlobIxI69YreNWVTM1Z4lkAYQM2xmwRA//0T53KNPTWIX52oDc52eFLJAlsWhXI9uHwgfwTt0X9g== 当代码变量获得价值,它看起来像:CfDJ8C5jg3XNISFEoFA015AdmTmmbOmQG / cxNBfdOALg4WM + iU6uf8WeJ13buFIzbdlP3tK3kWU1Q6BwGh / DY7dAYqbj + zz7jXGOK1Y79mtDT2jiEKV4NdaLbfaruzOvoKSVhvg4EFVYPAQRrjcAnOkfCxlff6hMVhIBWHkg8rqv7GBnqXvJ + UbCErqlobIxI69YreNWVTM1Z4lkAYQM2xmwRA // 0T53KNPTWIX52oDc52eFLJAlsWhXI9uHwgfwTt0X9g ==

After callback it's changed to: cfdj8c5jg3xnisfeofa015admtmmbomqg%2Fcxnbfdoalg4wm%2Biu6uf8wej13bufizbdlp3tk3kwu1q6bwgh%2Fdy7dayqbj%2Bzz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj%2Bubcerqlobixi69yrenwvtm1z4lkayqm2xmwra%2F%2F0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g%3D%3D 回调后它改为:cfdj8c5jg3xnisfeofa015admtmmbomqg%2Fcxnbfdoalg4wm%2Biu6uf8wej13bufizbdlp3tk3kwu1q6bwgh%2Fdy7dayqbj%2Bzz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj%2Bubcerqlobixi69yrenwvtm1z4lkayqm2xmwra%2F%2F0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g%3D%3D

On confirmation action I'm getting decoded token as: cfdj8c5jg3xnisfeofa015admtmmbomqg/cxnbfdoalg4wm+iu6uf8wej13bufizbdlp3tk3kwu1q6bwgh/dy7dayqbj+zz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj+ubcerqlobixi69yrenwvtm1z4lkayqm2xmwra//0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g== 在确认动作我越来越解码令牌:cfdj8c5jg3xnisfeofa015admtmmbomqg / cxnbfdoalg4wm + iu6uf8wej13bufizbdlp3tk3kwu1q6bwgh / dy7dayqbj + zz7jxgok1y79mtdt2jiekv4ndalbfaruzovoksvhvg4efvypaqrrjcanokfcxlff6hmvhibwhkg8rqv7gbnqxvj + ubcerqlobixi69yrenwvtm1z4lkayqm2xmwra // 0t53knptwix52odc52efljalswhxi9uhwgfwtt0x9g ==

Part of register.cshtml.cs 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 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);

So where I make a mistake? 那我在哪里弄错了?

我不确定,但是您尝试过这个吗?
code = System.Web.HttpUtility.UrlEncode(code);

Problem was in my startup.cs file, 问题出在我的startup.cs文件中,

options.LowercaseQueryStrings = true;

After comment token is working ok. 评论令牌工作正常之后。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM