首页 > 解决方案 > 电子邮件确认中的令牌无效

问题描述

当某些用户想要在我的应用程序中验证他们的电子邮件时,我收到了 Invalid token 的随机错误。它适用于大多数人,但偶尔有人在尝试验证电子邮件时遇到此错误令牌无效。

这是我生成和发送令牌的代码

 var code = await _userManager.GenerateEmailConfirmationTokenAsync(agent).ConfigureAwait(false);
                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var callbackUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new { area = "Identity", userId = agent.Id, code },
                    protocol: Request.Scheme);

我还面临的另一个问题,我认为可能与这个问题有关,我的应用程序也会生成防伪令牌错误,尽管它仍然提交表单而没有任何问题。每当访问带有 Antiforgery 令牌的页面时,它总是会引发此错误。诸如登录、注册或任何包含带有防伪令牌的表单的页面它总是返回的错误是

Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery|反序列化令牌时引发异常。Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:无法解密防伪令牌。---> System.Security.Cryptography.CryptographicException:在密钥环中找不到密钥 {1c4319c7-f7f0-4ae2-a1f1-fc9e7124d65b}。在 Microsoft.AspNetCore.DataProtection.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status) 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[] protectedData, Boolean ignoreRevocationErrors, Boolean& requiresMigration, Boolean& wasRevoked ) 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector。

我的应用程序是 ASP.NEt core 3.1,在 Windows 共享主机上运行

谢谢

标签: c#asp.net-coreantiforgerytokenemail-verification

解决方案


推荐阅读