我正在尝试这个git示例。当我将其与我的项目集成时,它可以很好地工作,但我想实现的是将json作为响应发送给客户端/请求,而不是successRedirect:'/ profile'和failureRedirect:'/ signup'。是否有可能发送一个json,或者有其他方法可以实现同样的效果?任何帮助将不胜感激。TU
app.post('/login',
passport.authenticate('local'),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
// Then you can send your json as response.
res.json({message:"Success", username: req.user.username});
});
默认情况下,如果身份验证失败,Passport将以401未经授权的状态响应,并且不会调用任何其他路由处理程序。 如果身份验证成功,则将调用下一个处理程序,并将req.user
属性设置为经过身份验证的用户。
我在这里修改了我的代码,将json作为响应发送。
// process the signup form
app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/successjson', // redirect to the secure profile section
failureRedirect : '/failurejson', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));
app.get('/successjson', function(req, res) {
res.sendfile('public/index.htm');
});
app.get('/failurejson', function(req, res) {
res.json({ message: 'hello' });
});
有官方的自定义回调文档:
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
https://github.com/passport/www.passportjs.org/blob/master/views/docs/authenticate.md
/jsonSend
,在其中使用res.json
,并将successRedirect: '/jsonSend'
。这样就可以了。router.get('/auth/callback', passport.authenticate('facebook'),
function(req, res){
if (req.user) { res.send(req.user); }
else { res.send(401); }
});
// process the signup form
app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/successjson', // redirect to the secure profile section
failureRedirect : '/failurejson', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));
app.get('/successjson', function(req, res) {
res.sendfile('public/index.htm');
});
app.get('/failurejson', function(req, res) {
res.json({ message: 'hello' });
});