gpt4 book ai didi

javascript - 使用访问 token 重置环回密码

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:26 25 4
gpt4 key购买 nike

我正在开发一个使用 Loopback 作为框架并包括用户和身份验证的项目。我添加了生成的密码重置路由并通过电子邮件发送,一切似乎都正常工作。最近,我发现密码重置似乎不起作用。这里重置密码的过程是:

  • 为用户调用密码重置方法
  • 从重置事件发送电子邮件,包括用户 ID 和访问 token
  • 通过重置链接,将 $http.defaults.headers.common.authorization 设置为传递的 token
  • 调用 user.prototype$updateAttributes(由 lb-ng 生成)根据表单更新密码属性

预期的行为是密码将在密码重置表单上更新。相反,我得到一个授权错误,作为 401 或 500(似乎来回)。我注意到在发送到 API 的实际 header 中,授权 token 与我从路由中传递的内容不匹配。尝试使用 LoopBackAUth.setUser 进行设置是行不通的,而且在实际发送请求之前也不会更新授权属性。

当它第一次添加时,我确实花了时间测试它,但我无法弄清楚会发生什么变化来破坏它。我一直在关注 loopback-faq-user-management 中的示例,但我们使用的是 Angular 前端,而不是该示例中的服务器端 View 。

编辑:

我尝试完全打开 ACL 以查看是否可以更新我的用户对象(继承自 User,但属于自己的类型)的密码(或任何属性)。尝试执行此操作时,我仍然收到 401。

编辑#2:

这是我的 ACL 和我如何调用它的示例代码。

来自模型定义的 ACL

...
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW",
"property": "updateAttributes"
}
...

auth.js

...
resetPassword: function(user) {
return MyUser.prototype$updateAttributes(user, user).$promise;
}
...

最佳答案

找出问题所在。在我们应用程序的服务器中,我们没有使用 Loopback 的 token 中间件。在启动服务器之前添加 app.use(loopback.token()); 会导致重置链接中提供的访问 token 按预期工作!

关于javascript - 使用访问 token 重置环回密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705765/

25 4 0