我有这样的路由器:
/* get user info */
router.get('/info', authenticate(), function (req, res) {
models.User.getUserById(req.user.id, function (result) {
if (result) {
var user = result.dataValues;
res.json({
success: true,
data: user,
message: 'Get user info success!'
})
} else {
res.json({
success: false,
message: 'User does not exist!'
})
}
})
});
authenticate()函数是这样的:
/* ensure authentication */
var authenticate = function () {
return passport.authenticate('jwt', {
session: false
});
}
如果用户登录,路由器将进入功能(req,res)。但是如果用户还没有登录呢?如果用户尚未登录,如何向客户返回消息?我可以回复passport.authenticate()
吗?如果可以的话,这个回调的参数是什么?
答案 0 :(得分:0)
根据Docs,您可以添加失败重定向网址和失败的Flash消息,如下所示:
var authenticate = function () {
return passport.authenticate('jwt', {
session: false,
failureRedirect: '/login',
failureFlash: 'Invalid username or password.'
});
}
或者如果您想要自定义回调:
var authenticate = function (req, res, next) {
return passport.authenticate('jwt', function (err, user, info) {
if (err) { return next(err); }
if (!user) {
// code if failed here
return res.redirect('/login')
}
req.logIn(user, function (err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username)
})
})
}