首页 > 解决方案 > passport.js 中的远程强制注销

问题描述

我想在我们的网站上创建一个“远程注销”功能。

某些服务提供此功能,例如 google.. https://support.google.com/mail/answer/8154

我在 node.js 中使用了 passport.js,所以我想知道如何制作这个功能,但找不到怎么做。

我想通过用户 ID 销毁会话。我们需要注销该用户的所有会话,因为人们使用许多浏览器和设备登录。

标签: node.jspassport.js

解决方案


我在我的网站上添加了与此类似的功能。

我找不到使用 PassportJS 的方法,但我所做的是在我的用户模式(mongoDB)中添加一个额外的布尔字段,称为FORCE_LOGOUT.

我通过前端的请求将值更改为FORCE_LOGOUTtruePOST

然后在我的主 app.js 脚本中,我检查了用户是否将该字段设置为 true,然后在允许他们继续之前强制他们注销。

我使用 expressJs,所以它看起来像这样:

app.use((req, res, next) => {
    if (req.user && req.user.FORCE_LOGOUT){
        req.user.FORCE_LOGOUT = false;
        req.user.save(err => {
            if(err) console.error(err);
            req.logout();
            return next();
        })
    } else {
        return next();
    }
});

可能有更好的方法来实现这一点,但这就是我解决它的方法,所以希望它有助于指导其他人。


推荐阅读