1

我一直在使用 VirtoCommerce 1.13,我希望注册用户收到一封电子邮件以确认他们的帐户。为此,我已经激活了正确的属性,并且电子邮件确实已发送以及所有内容,尽管 URL 的令牌部分格式不正确。我通过使用 HttpUtility.Encode 和 .Decode 解决了这个问题,因此当新用户访问该链接时,我可以发送正确的令牌并正确解码。到目前为止,一切都适用于新用户,除了大多数时候,尝试恢复密码的用户会遇到“密码重置失败。无效或过期的令牌。请尝试再次重置_密码”。令牌的编码/解码方式与注册过程相同。有时它确实有效,但我不知道为什么或如何复制它。有什么提示吗?谢谢你。

编辑:在进一步调试后,ResetPasswordWithTokenAsync 由于“无效令牌”而返回 false。错误,但令牌本身没有显示任何无效迹象。

4

1 回答 1

1

我发现了错误,在密码重置时使用令牌的解码功能时,令牌最终被解码了两次,这意味着它从 URL 编码格式变为文本,再次变为文本,但有一些小的变化,其中之一它们是 '+' 被转换为空格,这意味着令牌不匹配。

编辑:更改此行为后,令牌最终被编码两次并且仅解码一次,这意味着恢复我放入其中的解码会使情况变得更糟。为了解决这个问题,显然不需要像在注册过程中那样对密码恢复令牌进行编码或解码。

于 2015-03-30T17:34:31.340 回答