G'所有,
对于密码重置,有没有人对Waterlock流程有任何经验?我碰到了一堵墙,我可以看到它的解决方法,但看起来非常优雅,所以我可能会错过一些东西。
当我通过带有电子邮件元素的身份验证/重置POST发送时,系统会按计划拍摄电子邮件。
当我在POST请求中提交收到的链接时,如果有密码元素,我会看到" 404"响应。
无论其
如果我首先将该链接作为GET请求提交,然后提交POST就可以了。
当我查看waterlock-local-auth源时,重置POST操作正在测试请求对象中是否存在解密的令牌,然后才允许它继续。
SO
要么我的前端编码发送一个get请求(它没有正确响应),然后重新提交为POST,或者我进入并破解waterlock-local-auth代码以包含解码令牌(我认为这是最优雅的解决方案)。
任何线索?
谢谢,
安迪
答案 0 :(得分:1)
我遇到了类似的问题,但我使用angularjs作为我的前端。这个讨论主题非常有帮助:
https://github.com/waterlock/waterlock-local-auth/issues/7
基本上,您需要向密码重置电子邮件中收到的网址提交GET请求。单击带有令牌的链接后,您将在数据库中找到已创建新的ResetToken记录,并且令牌列中的值正是您在URL中看到的值。然后你应该被重定向到waterlock.js设置中的forwardUrl
,那里应该有一个表格或任何可以让你发帖的内容:
http://yourdomain.com/auth/reset?password=newpassword
然后重置密码,并从数据库中删除ResetToken记录。
如果你在这里查看handlePost
功能:
https://github.com/waterlock/waterlock-local-auth/blob/master/lib/controllers/actions/reset.js#L68
这可以解释为什么POST到重置密码电子邮件中发送给您的网址会返回404. resetToken
必须已存在于会话中才能调用issuePasswordReset
。设置req.session.resetToken
的唯一位置是validateToken
方法:
https://github.com/waterlock/waterlock-local-auth/blob/master/lib/controllers/actions/reset.js#L188
所以你首先需要一个get请求。希望这会有所帮助。