ASP.NET 身份 2:密码重置令牌将无法正确通过
ASP.NET Identity 2: Password Reset Token will not pass correctly
当我尝试按照提供的许多示例进行操作时,我 运行 遇到了几个问题。代码的最新迭代如下所示;
string passwordResetToken = await _applicationUserManager.GeneratePasswordResetTokenAsync(u.Id);
string code = callbackUrl + HttpUtility.UrlEncode(passwordResetToken);
await _applicationUserManager.SendEmailAsync(u.Id, RESET_SUBJECT, string.Format(RESET_BODY, u.FirstName, u.LastName, code));
密码重置 link 看起来像:
- 问题 1:如果我只是尝试使用密码重置令牌 'as is',我会因为“+”号而收到路由错误(这显然会创建一个 'double escape sequences',这是不允许的IIS 中的默认设置...这似乎是一个很好的理由。)
- 问题 2:If 我 URLEncode(passwordResetToken) 结果 "code" 看起来不错,但是当我将其放入电子邮件并单击 link 它得到URL已解码并出现同样的错误...
- 问题 3:即使我启用双重转义(在 web.config 中),生成的 URL 也会以无法正确路由回帐户控制器的方式进行解析。
我没有发现其他人对此有抱怨,所以我想我错过了一些愚蠢的东西......但我找不到它......
您可以尝试使用常规查询字符串参数,而不是使用 uri 参数定义自定义路由。
var url = "account/reset?token=" + HttpUtilityUrlEncode(token);
当我尝试按照提供的许多示例进行操作时,我 运行 遇到了几个问题。代码的最新迭代如下所示;
string passwordResetToken = await _applicationUserManager.GeneratePasswordResetTokenAsync(u.Id);
string code = callbackUrl + HttpUtility.UrlEncode(passwordResetToken);
await _applicationUserManager.SendEmailAsync(u.Id, RESET_SUBJECT, string.Format(RESET_BODY, u.FirstName, u.LastName, code));
密码重置 link 看起来像:
- 问题 1:如果我只是尝试使用密码重置令牌 'as is',我会因为“+”号而收到路由错误(这显然会创建一个 'double escape sequences',这是不允许的IIS 中的默认设置...这似乎是一个很好的理由。)
- 问题 2:If 我 URLEncode(passwordResetToken) 结果 "code" 看起来不错,但是当我将其放入电子邮件并单击 link 它得到URL已解码并出现同样的错误...
- 问题 3:即使我启用双重转义(在 web.config 中),生成的 URL 也会以无法正确路由回帐户控制器的方式进行解析。
我没有发现其他人对此有抱怨,所以我想我错过了一些愚蠢的东西......但我找不到它......
您可以尝试使用常规查询字符串参数,而不是使用 uri 参数定义自定义路由。
var url = "account/reset?token=" + HttpUtilityUrlEncode(token);