Sails / Waterlock密码重置流程

时间:2016-02-07 22:41:10

标签: ember.js passwords sails.js reset waterlock

G'所有,

对于密码重置,有没有人对Waterlock流程有任何经验?我碰到了一堵墙,我可以看到它的解决方法,但看起来非常优雅,所以我可能会错过一些东西。

当我通过带有电子邮件元素的身份验证/重置POST发送时,系统会按计划拍摄电子邮件。

当我在POST请求中提交收到的链接时,如果有密码元素,我会看到" 404"响应。

无论其

如果我首先将该链接作为GET请求提交,然后提交POST就可以了。

当我查看waterlock-local-auth源时,重置POST操作正在测试请求对象中是否存在解密的令牌,然后才允许它继续。

SO

要么我的前端编码发送一个get请求(它没有正确响应),然后重新提交为POST,或者我进入并破解waterlock-local-auth代码以包含解码令牌(我认为这是最优雅的解决方案)。

任何线索?

谢谢,

安迪

1 个答案:

答案 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请求。希望这会有所帮助。