Asp.net 身份电子邮件验证令牌无法识别

2023-12-05

我们在 Web 表单应用程序中使用 Microsoft 的 Identity Framework v2.0。一切都运转良好。我们决定添加电子邮件验证作为新帐户设置过程的一部分。如果我们在同一页面中创建令牌后对其进行验证,那么我们就成功了。但是,如果我们尝试在不同页面中验证令牌,则会失败。过程非常简单:

  1. 管理员通过提供用户的电子邮件和姓名来创建新帐户。 (我们不支持自助注册)。
  2. 用户点击电子邮件中收到的链接来验证电子邮件是否已收到。

以下是创建电子邮件验证令牌的代码:

var manager = new UserManager();
var user = new ApplicationUser() { UserName = EmailAddress.Text, Email = EmailAddress.Text, FirstName = FirstName.Text, LastName = LastName.Text };
IdentityResult result = manager.Create(user);
var provider = new DpapiDataProtectionProvider();
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(provider.Create("EmailConfirmation"))
{
    TokenLifespan = TimeSpan.FromHours(24)
};
var strToken = manager.GenerateEmailConfirmationToken(user.Id);
//IdentityResult validToken = manager.ConfirmEmail(user.Id, strToken);
strToken = HttpUtility.UrlEncode(strToken.ToString());

注意:如果我们取消注释 //IdentityResult validToken... 开头的行,则成功。

以下是验证电子邮件页面上的代码:

string userid = Request.QueryString["id"].ToString();
string tokenReceived = Request.QueryString["token"].ToString();
//tokenReceived = HttpUtility.UrlDecode(tokenReceived);
ApplicationUser User = new ApplicationUser();
var manager = new UserManager();
User = manager.FindById(userid);
var provider = new DpapiDataProtectionProvider();
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(provider.Create("EmailConfirmation"))
{
    TokenLifespan = TimeSpan.FromHours(24)
};

IdentityResult validToken = manager.ConfirmEmail(User.Id, tokenReceived);

validToken 行在此文件中失败。我已验证字符串 User.Id 和 tokenReceived 在两个文件中完全匹配,因此不会发生 URL 损坏。 (这就是为什么我注释掉了 UrlDecode,因为它似乎是由浏览器自动解码的 - 当我尝试解码时,它与编码前的字符串并不 100% 相同)。

所以我确信我们正在调用相同的方法(ConfirmEmail),并且传递的两个参数是完全相同的字符串。我还知道令牌只能验证一次,因此我不会在验证一次后尝试重新使用它们。

任何想法都会受到欢迎。


我认为问题在于DpapiDataProtectionProvider- 如果您在创建和验证令牌时使用此类的相同实例,它将正常工作。

任何你没有得到的原因UserManager根据 VC2013 模板来自 Owin Context?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.net 身份电子邮件验证令牌无法识别 的相关文章

  • Django - 使用多种表单

    我想做的是在一个页面中管理多个表单 我知道有表单集 并且我知道表单管理是如何工作的 但是我的想法存在一些问题 只是为了帮助您想象我的问题是什么 我将使用 django 示例模型 from django db import models cl
  • 带有输入的动态创建行上的日期选择器

    我有一个表单可以使用输入动态创建新行 每个新行上的日期输入应该有一个日期选择器 我几乎可以正常工作 但是当创建带有输入的新行时 日期选择器将不再在已经存在的日期字段上工作 我玩了一整天来找出我做错了什么 但我就是不知道如何解决这个问题 这是
  • 以编程方式设置 aspnet:MaxHttpCollectionKeys

    在特定网站的一些管理功能中 我正在做一篇特别可怕的帖子 需要一个large要发布的数据量 为了实现这一点 我必须添加 Web config appSetting https stackoverflow com questions 88324
  • 你调用的对象是空的。 IE问题

    我在 ASP Net 中开发了一个网站 它在除 IE 之外的所有浏览器中都能正常工作 在 IE 中我收到错误 对象引用未设置为对象的实例 在我的本地计算机中一切正常 发布到服务器后出现错误 有什么想法如何解决这个问题吗 这是我得到的堆栈跟踪
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • jquery 表单使用 .on() 提交

    我正在尝试发送由 jquery 创建的表单 该表单附加到一个 div 中 下面的变量 data 是使用 php 创建的 我将只发布最重要的 js 代码 我尝试了很多带有和不带 on 的方法 但我未能让警报框显示 1 以便我知道代码块实际上已
  • 密码保护 IIS 7.5 中的 ASP.NET Web 应用程序

    我在 Windows 7 上使用 IIS 7 5 为我的 asp net 网站提供测试服务 为了阻止随意的人查看我的网站 我希望 IIS 在提供任何服务之前需要用户名和密码 我已尝试在应用程序上禁用匿名身份验证并启用 Windows 身份验
  • 隔离必需的字段验证器?

    我在页面上有两个搜索按钮 一个链接到下拉列表 另一个链接到带有文本框的下拉列表以获取更多搜索条件 我在所有上述控件上都需要现场验证器 当我从第一个下拉列表中选择某些内容并单击相应的搜索按钮时 文本框的字段验证器会触发 从而禁用第一个搜索按钮
  • 将空查询字符串参数视为空字符串,而不使用参数类

    我正在尝试将多个参数传递给 httpget Web api 函数 我遇到的关键问题是空查询字符串参数被转换为空 我可以通过创建一个如下所示的类来解决这个问题 public class CuttingParams DisplayFormat
  • 执行多个查询时如何保持连接打开?

    我正在使用多个查询从应用程序中的同一服务器提取数据 问题是每次有新查询时我都必须打开一个新连接 是否有可能 打开连接 运行查询 拉取结果 运行另一个查询 拉取另一个结果 运行最终查询 拉取另一个结果 关闭连接 尽管您可能还不知道 但您的做法
  • 避免 Django 中表单输入元素 ID 重复

    当一页上的两个表单具有相同名称的字段时 Django 将生成无效的 HTML
  • 在 .NET C# 项目中使用 PHP

    有谁知道是否可以 以及是否有任何复杂性 在 NET C 项目中使用 PHP 语言 我知道 VB 和 C 现在可以混合在解决方案中 所以我想知道 由于 IIS 现在能够运行 PHP 您是否可以将它们组合成一个单一的运行时 显然 提出这个问题的
  • 类型定义存在于两个库中

    我正在使用 NET 4 5 构建 ASP NET Web 窗体网站 错误 The type System ComponentModel DataAnnotations Schema ForeignKeyAttribute exists in
  • MVC3远程模型验证操作中的参数名称

    我使用远程验证属性SSN属性 在视图页面中我使用通用视图 然后 ssn 字段如下 Html EditorFor model gt model MainModel SSN Html ValidationMessageFor model gt
  • 在 ASP.NET 中优雅地处理 URI 黑客攻击

    我编写了一个应用程序 可以优雅地处理大多数异常 页面设计完好无损 并且有一条漂亮的错误消息 我的应用程序将它们全部捕获在Page Error事件并添加了例外HttpContext Curent Context Items然后做了一个Serv
  • ACT by Sage 与 asp.net 集成 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 想知道这里是否有人可以提供帮助 我被要求开发一个 ASP Net 应用程序 它将直接连接 存储和检索 到 ACT 数据库已经正常运行
  • 如何从用户控件引用母版页?

    我正在寻找一种方法 最好 从使用母版页的内容页中找到的用户控件强类型母版页 遗憾的是 您不能在用户控件中使用它 我试图从用户控件访问母版页的属性 而不必将该属性从母版页传递到内容页再传递给用户控件 因为多个内容页使用相同的用户控件 一处改变
  • 以编程方式 Godaddy 发送的电子邮件不在“已发送邮件”文件夹中 C#.net

    我正在通过以下方式发送电子邮件ASP NET代码使用godaddy邮件服务器 邮件发送成功 但未存储在已发送邮件文件夹中 我正在使用下面的代码 SmtpClient client new SmtpClient client Host smt
  • 如果用户可以解密 web.config,那么加密它有什么意义呢?

    哎呀 一些供应商告诉我的老板 不加密 web config 是一个很大的安全漏洞 这对我来说听起来像是废话 我的意思是 如果有人破坏了服务器 我们不是就完蛋了吗 就像 Joelt 所建议的那样 ASP NET 最近出现了一个安全问题 允许人
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置

随机推荐

  • 在 R 中阅读和理解 XML

    我正在尝试从位于以下位置的网络读取 XML https d396qusza40orc cloudfront net getdata 2Fdata 2Frestaurants xml 我在 R 中收到以下错误 Error XML conten
  • 如何通过城市和国家获取时区?

    在我的 django 项目中 我有一个小型酒店数据库 其中包含字段city and country 我可以得到timezone通过传递到那个地方city and country以某种方式作为参数 我想这样做的原因是因为我有一些基于差异的命令
  • 如何使用 sys.settrace 跟踪在全局范围内运行的代码?

    假设我有一段这样的代码 import sys def printer frame event arg print frame event arg return printer sys settrace printer x 1 sys set
  • Pandas groupby - 一组不同的值

    我有这个数据框 x pd DataFrame from dict cat1 A A A B B C C C cat2 X X Y Y Y Y Z Z cat1 cat2 0 A X 1 A X 2 A Y 3 B Y 4 B Y 5 C Y
  • .Net Core 2.0 未找到视图“索引”

    我将 net core 2 0 应用程序部署到 IIS 并收到以下错误 InvalidOperationException 未找到视图 索引 搜索了以下位置 Views Home Index cshtml Views Shared Inde
  • Python while循环中如何返回值

    当将 return 放入 while 循环时 循环将停止 如何修复它 ser serial Serial port COM5 baudrate 9600 timeout 1 while 1 x str ser readline x re f
  • 在场景之间传递数据 (SpriteKit)

    如何将 SpriteKit 中的信息从一个场景传递到另一个场景 在我的游戏中 我有两个场景 GameScene 和 GameOverScene 分数随着增加而显示在 GameScene 中 但是如何将此信息发送到第二个场景呢 当玩家生命耗尽
  • 如何从来电中获取电话号码?

    Android 中有来电时如何获取电话号码 Make a Broadcast receiver say ServiceReceiver在清单中分配其操作
  • 如何在 Linux 上找到所有串行设备(ttyS、ttyUSB、..)而不打开它们?

    获取 Linux 系统上所有可用串行端口 设备列表的正确方法是什么 换句话说 当我迭代所有设备时 dev 如何用经典的方式判断哪些是串口 即通常支持波特率和RTS CTS流量控制 该解决方案将用 C 进行编码 我问是因为我使用的第三方库显然
  • PDO 获取不返回任何内容[重复]

    这个问题在这里已经有答案了 我遇到了一个小问题 我有以下代码 query db gt prepare SELECT last visit last ip FROM user log WHERE user id id UNION SELECT
  • 在 angularjs 中的 app.config() 内进行更改

    我在 angularJs 中使用 googlePlace api 我想根据需要动态更改地点类型 就像我使用控制器使用 scope 绑定视图部分中的值一样 但在这种情况下它不起作用也尝试了 rootScope 也尝试了很多其他的东西 但它们都
  • 如何使屏幕阅读器工具大声朗读内联错误?

    我正在做可访问性测试 我创建了一个电子邮件文本框并添加了一些验证 我希望在输入错误的电子邮件后 当我移动到下一个元素时 屏幕阅读器应该读取内联错误 我遇到过使用 aria describeby 和 aria live 属性 但不知道如何在这
  • git-python 从存储库获取提交源

    正在编写一个代码 我想从 github 上的存储库检索提交 我不完全确定如何做这样的事情 我有 git python 但大多数 api 都是用于在同一文件系统上打开本地 git 存储库 有人可以建议吗 问候 对我来说 以下效果最好 Impo
  • Android更改应用程序图标[重复]

    这个问题在这里已经有答案了 我真的不知道如何更改安装应用程序时出现的应用程序图标 即您必须单击屏幕上的图标 我做了什么 我创建了一个新图标 gt 新建 gt 图像资源 mipmap 我删除了ic launcher 默认的 我将新资源命名为旧
  • 标签编码具有相同类别的多列

    考虑以下数据框 import pandas as pd from sklearn preprocessing import LabelEncoder df pd DataFrame data France Italy Belgium Ita
  • 如何使用 php 通过谷歌地图获取步行或驾车距离

    我以前使用过谷歌地图 但在实现它时 我从未找到任何关于如何通过 Javascript 或 PHP 获取两个给定位置之间的准确距离的文档 它必须与地图上显示的距离完全相同 而不是给出从一个地理点到另一个地理点的直线距离的公式 它必须是 PHP
  • 如何在ggplot2中显示Y轴上出现的次数

    我正在尝试使用 ggplot2 在 R 中制作分组条形图 我为此使用的代码是 ggplot loanData aes factor loanData saving status
  • 如何增加条形图和条形标签之间的间距? [复制]

    这个问题在这里已经有答案了 绘图和值 204 kwh 604 kwh 60 kwh 之间的空间太小 如何将这些值移高一点并增加间距 我拥有的 我想要的是 Code x name Average nneighborhood u00b9 You
  • 如何在 SQL Server 中获取列数据?

    如何在 SQL Server 中获取列数据 Format Name Date xxx 10 15 2015 xxx 12 15 2015 xxx 15 15 2015 yyy 20 15 2015 yyy 25 15 2015 期望的输出
  • Asp.net 身份电子邮件验证令牌无法识别

    我们在 Web 表单应用程序中使用 Microsoft 的 Identity Framework v2 0 一切都运转良好 我们决定添加电子邮件验证作为新帐户设置过程的一部分 如果我们在同一页面中创建令牌后对其进行验证 那么我们就成功了 但