【问题标题】:Sails/Waterlock password reset flowSails/Waterlock 密码重置流程
【发布时间】:2016-02-07 22:41:09
【问题描述】:

万事如意,

有人对密码重置的 Waterlock 流程有任何经验吗?我碰壁了,我可以看到一个解决方法,但它看起来真的很不优雅,所以我可能遗漏了一些东西。

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

当我在 POST 请求中提交收到的链接时,带有密码元素,我看到“404”响应。

但是

如果我先将该链接作为 GET 请求提交,然后再提交 POST,则它可以工作。

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

所以

要么我编写前端代码以发送获取请求(无法正确响应),然后作为 POST 重新提交,要么我进入并破解 waterlock-local-auth 代码以包含令牌的解码(这是我认为最优雅的解决方案)。

有什么线索吗?

谢谢,

安迪

【问题讨论】:

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


    【解决方案1】:

    我遇到了类似的问题,但我使用 angularjs 作为我的前端。这个讨论帖很有帮助:

    https://github.com/waterlock/waterlock-local-auth/issues/7

    基本上,您应该向密码重置电子邮件中收到的 url 提交 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 到重置密码电子邮件中发送给您的 url 返回 404。resetToken 必须已经存在于会话中,以便调用 issuePasswordReset。而设置req.session.resetToken的唯一位置是在validateToken方法内:

    https://github.com/waterlock/waterlock-local-auth/blob/master/lib/controllers/actions/reset.js#L188

    所以你首先需要一个获取请求。希望这会有所帮助。

    【讨论】:

    • 确实如此,但我似乎仍然在会话中使用 null 令牌到达 post 处理程序。目前正在尝试了解为什么会这样,同时在流程中添加对 recaptcha 的支持...
    • 两个问题:(1)您是否将passwordReset 中的tokens 设置为true? (2) 您是否将 waterlock 和 waterlock-local-auth 升级到最新版本(目前为 0.1.2-rc1)?旧版本的发送邮件功能坏了。
    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多