c# - 电子邮件确认中的令牌无效
问题描述
当某些用户想要在我的应用程序中验证他们的电子邮件时,我收到了 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 共享主机上运行
谢谢
解决方案
推荐阅读
- android - instanceId 和 getIdToken 有什么区别
- homestead - 502 网关错误 laravel5.7
- angular - 选中复选框时如何动态生成和验证输入文本框
- shopify - 如何在 Shopify EASDK modal.confirm 上设置样式样式
- mysql - 将现有的 MySQL rails 应用程序转换为使用 Postgres:“所有池连接都在使用中”
- python - 用多字符字母查找某个字母表中的所有单词
- c++ - 'tedt' 的异常定义
- sql - 如何从 apache Drill sql 中的日期获取星期几?
- linux - 语法错误:预期操作数(错误标记为“+”)(我无法用其他线程解决此问题)
- vue.js - 如何在 .vue 组件模板中访问初始应用程序实例的属性?