我一直在使用VirtoCommerce 1.13,希望注册用户收到电子邮件以确认其帐户。为此,尽管URL的令牌部分格式不正确,但我已经激活了正确的属性,并且确实发送了电子邮件和所有内容。我使用HttpUtility.Encode和.Decode解决了这个问题,因此当新用户访问该链接时,我都可以发送正确的令牌并对其进行正确解码。到目前为止,对于大多数新用户而言,所有情况都适用,除了大多数情况下,尝试恢复密码的用户会受到“密码重置失败。令牌无效或令牌已过期。请尝试再次重置_password ”的攻击。令牌的编码/解码方式与注册过程相同。有时它确实有效,我不知道为什么或如何复制它。有什么提示吗?谢谢你。
编辑:在进一步调试后,ResetPasswordWithTokenAsync由于“无效令牌”而返回false。错误,但令牌本身没有任何无效迹象。
我发现了错误,当密码重置后对令牌使用解码功能时,令牌最终被解码两次,这意味着它从URL编码格式变为文本,再次变为文本,但变化很小,其中之一它们被'+'转换为空格,这意味着令牌将不匹配。
编辑:更改此行为后,令牌最终被编码两次且仅解码一次,这意味着还原我放入的解码使其变得更糟。为了解决这个问题,显然不需要像注册过程中那样对密码恢复令牌进行编码或解码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句