问题似乎很模糊,我需要一种发送json对象并同时通过通行证进行身份验证的方法。该对象为req.isAuthenticated,稍后将在前端使用axios将该对象作为检查点。那就是我的意图。到目前为止,使用下面的代码,该对象将不会发送。
app.get('/login',
passport.authenticate('saml', {
successRedirect: '/assert',
failureRedirect: '/',
}),
(req, res) => {
res.json({isAuthenticated: req.isAuthenticated()})
}
);
答案 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);