首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.NET -标识2-无效令牌错误- Php

Asp.NET -标识2-无效令牌错误- Php
EN

Stack Overflow用户
提问于 2017-11-09 11:02:08
回答 1查看 220关注 0票数 0

我正在使用Asp.Net-Identity-2,并开发了验证电子邮件流。

在我的本地环境中,一切都运行得很好,但是一旦我将代码部署到我的服务器上,并且在我的服务器上测试相同的场景(在我的本地环境上运行),它就会说“无效令牌”。

场景

  • 更改电子邮件
  • 接收电子邮件
  • 单击“验证电子邮件”链接
  • 重定向到网页
  • 弹出一条“无效令牌”的消息。

我已经检查了这个question中可能出现的所有错误,而且我的一切都是正确的,这就是为什么我的本地程序运行得很好的原因。一定是服务器的问题。我认为服务器的日期可能会影响到,但是我同步了数据库服务器和Web服务器的日期,但它仍然失败。

我使用GenerateEmailConfirmationTokenAsync生成令牌,使用ConfirmEmailAsync确认令牌。我真的在执行这个方法,因为我为它设置了日志,所以我可以确定它(当您不知道会发生什么时,您必须确定所有的事情,对吗?)

我已经对url进行了编码/解码,这样令牌就不会损坏。我确信这一点,因为我在服务器中放置日志并运行代码,并检查了几次。

用户在数据库中有一个安全标记,所以不是

TokenLifeSpan为8天。所以不是那样的。

我甚至尝试过AllowOnlyAlphanumericUserNames属性= false在UserValidator中,甚至在UniqueEmail = false中

代码语言:javascript
复制
userManager.UserValidator = new UserValidator<User>(userManager) { AllowOnlyAlphanumericUserNames = false, UniqueEmail = false };

生成令牌的代码

代码语言:javascript
复制
ApplicationUserManager.GenerateEmailConfirmationTokenAsync(userId);

确认令牌的代码

代码语言:javascript
复制
ApplicationUserManager.ConfirmEmailAsync(subject, token);

有什么想法吗?

更新

它在服务器/本地与所有客户端一起工作,而不是与Php客户端一起工作,而Php客户端正在做额外的工作,这改变了安全性标记,因此出现了问题。

由于服务器上唯一的客户端是Php,所以我认为服务器有问题,而不是本地环境的问题。在我的本地和调试中安装了整个环境(带有php客户端)之后,我发现了问题。请阅读下面的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 10:59:13

这个错误是由令牌生成后正在执行的代码引起的。此代码正在更改数据库中用户的SecurityStamp。

由于Asp.Net标识2使用安全标记来生成和验证令牌,并且在令牌生成后对其进行了更改,因此令牌始终无效。

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47200154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档