如何同时发送对象和护照认证

时间:2018-11-20 09:26:56

标签: javascript node.js authentication passport.js saml-2.0

问题似乎很模糊,我需要一种发送json对象并同时通过通行证进行身份验证的方法。该对象为req.isAuthenticated,稍后将在前端使用axios将该对象作为检查点。那就是我的意图。到目前为止,使用下面的代码,该对象将不会发送。

app.get('/login',
    passport.authenticate('saml', {
        successRedirect: '/assert',
        failureRedirect: '/',
    }),
    (req, res) => {
        res.json({isAuthenticated: req.isAuthenticated()})
    }
);

1 个答案:

答案 0 :(得分:1)

这是我的项目中的示例示例:

train_config

您会看到护照authorizeLocal: (req, res, next) => { passport.authenticate('local-auth', (err, user, info) => { if (info) console.log(info); if (err) return next(err); if (!user) return res.status(200).send({failReason: 'wrong login/password'}); req.logIn(user, err => { if (err) return next(err); delete user.password; req.session.cookie.maxAge = 24 * 60 * 60 * 1000; // 24 hours if (user.role === 'operator') { user.status = 'Online'; operatorsService.setStatus('Online', user.id) .then(result => { dialogsService.getWaitingDialogs(); user.work_time = result; res.status(200).send(user); }) .catch(() => res.status(200).send({failReason: 'Service error'})); } else res.status(200).send(user); }); })(req, res, next); }, ,护照(根据您的情况需要req.logIn策略或其他方式)执行身份验证,如果成功触发了回调逻辑。更深入地讲,您可以具有任何用户/对象获取/生成逻辑。例如,我离开了我的案子。 local-auth返回一些时间数据,该数据存储为作为响应发送给用户的用户(在策略逻辑运行后,用户作为回调参数被获取)。您可以在此处添加OperatorsService.setStatus

因此,您将拥有类似的东西:

auth.route.js

user.isAuthenticated = req.isAuthenticated();

authCtrl.js

app.get('/login', authCtrl.authorizeLocal);