Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loopbackjs 环回更新属性设置密码删除令牌?_Loopbackjs - Fatal编程技术网

Loopbackjs 环回更新属性设置密码删除令牌?

Loopbackjs 环回更新属性设置密码删除令牌?,loopbackjs,Loopbackjs,我在方法中获得了一个名为“changePassword”的端点方法,该方法的http路径为“/:id/changePassword”,我通过id查找帐户并更新模型的password属性,但问题是密码确实会更改并得到更新,但访问令牌也会被无故删除 当前代码 instance.hasPassword(data.oldPassword, function(err, isMatch) { if (isMatch) { instance.updateAttributes({'pas

我在方法中获得了一个名为“changePassword”的端点方法,该方法的http路径为“/:id/changePassword”,我通过id查找帐户并更新模型的password属性,但问题是密码确实会更改并得到更新,但访问令牌也会被无故删除

当前代码

instance.hasPassword(data.oldPassword, function(err, isMatch) {
    if (isMatch) {
        instance.updateAttributes({'password': data.password}, function(errUpdateAccount, updatedAccount) {
            if (!errUpdateAccount) {
                return cb(null, {
                    status: 200
                });
            } else {
                return cb(errUpdateAccount);
            }
        });
    }
});

是的,这是新的行为。如果更改了整个用户对象(user.update和friends),或者仅更改了密码,则所有用户访问令牌都将无效

:

出于安全原因,注销用户很重要。考虑这种情况 当有人入侵你在注册时使用的电子邮件时 环回供电的应用程序。找到后,登录应用程序并 将电子邮件更改为未被黑客攻击的其他电子邮件。没有 会话(访问令牌)无效时,攻击者将保持日志记录 进入您的帐户,您将无法将其注销

话虽如此,我同意这会减少用户体验 最优的我建议允许最终用户决定是否 是否要注销其他会话,请参阅

现在这个()还有一个未解决的问题,没有拉取请求。这方面没有干净的解决办法

如果您真的非常想找到解决方案,那么您可以使用monkey patch环回:

我看了一下代码,发现它调用了。由于我知道在项目中的任何其他地方都可以使用此函数,所以我猜您可以做一个有风险的操作来覆盖它,而不做任何事情:

app.models.User._invalidateAccessTokensOfUsers = (ids, cb) => process.nextTicke(cb);

这是我能想到的最好的解决问题的方法,直到他们解决这个bug()。请注意,您应该确保您的代码和依赖项也不会使用
\u invalidateAccessTokensOfUsers
,并且环回不会在其他地方开始使用它。请好好注释它,不要忘记删除它,并且要非常小心。

非常感谢您的评论,并指出了导致问题的代码,令人敬畏的stuff man。请注意,新版本的LoopBack(/)在使令牌无效时保留了当前会话。这可能足以单独解决OP的问题。