我一直在使用VirtoCommerce 1.13,我希望注册用户收到一封电子邮件以确认他们的帐户。为了做到这一点,我已经激活了正确的属性,电子邮件确实会被发送,尽管URL的令牌部分格式不正确。我使用HttpUtility.Encode和.Decode解决了这个问题,这样我就可以发送正确的令牌,并在新用户访问该链接时对其进行正确解码。到目前为止,所有功能都适用于新用户,但大多数情况下,试图恢复密码的用户会收到"密码重置失败。令牌无效或过期。请再次尝试重置密码"。令牌的编码/解码方式与注册表过程相同。有时它确实有效,但我不知道为什么或如何复制它。有什么提示吗?非常感谢。
EDIT:在进一步调试后,ResetPasswordWithTokenAsync由于"无效令牌"错误而返回false,但令牌本身没有显示任何无效迹象。
我发现了一个错误,当在密码重置时对令牌使用解码功能时,令牌最终被解码了两次,这意味着它从URL编码的格式变成了文本,又变成了文本——但有一些小的更改,其中一个是'+'被转换为空白,这意味着您的令牌不匹配。
编辑:在改变这种行为后,令牌最终被编码了两次,只解码了一次,这意味着恢复我在那里输入的解码会让情况变得更糟。为了解决这个问题,显然,密码恢复的令牌不需要像注册过程中那样进行编码或解码。