当前位置: 首页 > 知识库问答 >
问题:

使用ASP.NET标识重置密码时令牌无效

锺离浩慨
2023-03-14

通过复制VS2013模板中的代码,我在MVC应用程序中实现了ASP.NET标识。基本的东西是工作的,但我不能得到重置密码工作。当我显示“忘记密码”页面时,将生成一封包含令牌的电子邮件。方法返回此标记:

UserManager.GeneratePasswordResetTokenAsync(user.Id)
UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

共有1个答案

左康安
2023-03-14

ASP.NET标识中的UserManager生成的标记通常包含“+”字符,当作为查询字符串传递时,这些字符将在URL中更改为“”(空格)。在ResetPassword ActionResult中,将“”替换为“+”,如下所示:

var code = model.Code.Replace(" ", "+");
//And then change the following line 
UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
//To this one so it uses the code(spaces replaced with "+") instead of model.Code
UserManager.ResetPasswordAsync(user.Id, code, model.Password);

应该能奏效。我也有同样的问题,在这里找到了答案。

 类似资料:
  • 我有一个生成密码重置令牌的Webapi服务。 令牌生成服务endpoint:

  • 我写的是MVC5,使用的是Identity 2.0。 我在邮件中点击链接,我正在获得密码重置令牌并使用 结果总是false,并表示“无效令牌”。我该在哪里修?

  • 我有两台服务器使用相同的ASP。NET核心标识后端。我使用以下命令生成密码重置令牌: 我通过电子邮件链接发送此令牌。当用户单击链接时,他们会被带到一个单独的站点,该站点应提供一个用户界面来更改密码。以下代码处理用户提交令牌及其新密码的密码: 在第二台服务器上,标识结果总是返回false,因为“无效令牌”。 通过查看源代码,我看到令牌是使用IP地址生成的(因此我理解令牌验证失败的原因)。 我的问题是

  • 如何覆盖令牌消息“此密码重置令牌无效。” 我尝试将此添加到ResetPasswordController中,但它仍然显示默认的令牌消息。 我需要添加一个URL而不是仅仅改变文本。覆盖“密码重置令牌无效”的错误文本Laravel 我发现实际验证令牌的是$this->broker()->reset()。完全覆盖此方法是否是覆盖令牌消息的唯一方法?

  • 我试图使用ANTLR4创建一个简单的解析器,但我在识别lexer令牌方面遇到了问题。问题是,即使单词SAYS后面有一个“:”,解析器规则也不能识别它。而且对于提及,@Michael也没有被识别出来。 输入的文本是:john说:hello@Michael这将不起作用 //LEXER规则

  • 一些相关问题:Webforms ASP。NET Identity system重置密码 我试图使用身份系统实现密码恢复,但遇到了错误(商店没有实现IUserEmailStore)。下面是我正在做的,我正在使用Visual Studio 2013 Web。使用Web表单(MVC学习进行中),用户注册他们的电子邮件,并存储在数据库的用户名字段中。我在IdentityModel中添加了UserManag