javascript – 如何在Node中使用Passport.js模拟其他用户?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在Node中使用Passport.js模拟其他用户?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Node中使用Passport.js,有没有办法允许一个用户冒充另一个用户?例如.作为应用程序的管理员,我希望能够以另一个用户身份登录,而无需知道他们的密码.

最简单的是,如果我可以更改序列化的用户数据(用户ID),我会感到满意,因此当调用deserializeUser时,它将只假设备用用户的身份.我已经尝试替换req._passport.session.user中的值和req.session.passport.user中的值,但是净效果只是我的会话似乎变得无效而Passport会将我注销.

解决方法

如果您想手动执行身份验证,Passport会提供 req.logIn方法.即使不进行身份验证,您也可以使用它登录任何用户.

这是你如何使用它.让Admin正常登录,谁将设置isAdmin标志.

然后在visa.authenticate之前在登录路由中放置一个中间件.如果当前登录用户是admin,这将仅根据用户名登录新用户.

app.post('/login',function forceLogin(req,res,next) {
        if (!req.user.isAdmin) return next(); // skip if not admin
        User.findOne({
            username: req.body.username    // < entered username
        },function(err,user) {
            // no checking for password
            req.logIn(user);
            res.redirect('/users/' + user.username);
        });
    },passport.authenticate('local'),function(req,res) {
        res.redirect('/users/' + req.user.username);
    }
);

猜你在找的JavaScript相关文章