如何使用Passport.js和节点单页面的应用程序

我不认为有这样的问题让我恼火。 似乎有0个地方看起来或回答这个。 我想要做的就是获得护照拦截对“/ login”和“/ getloginStatus”的调用。

login时,我只想使用Json对象作为{username / password}的参数。 当我login时,我只想返回true / false,如果用户在他们的浏览器中有一个身份validation票证。

这是我有,但它丝毫不奏效,一半的问题似乎是我的本地战略实施永远不会被称为….

var passport = require('passport') , LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) { console.log('this NEVER gets called'); } )); app.post('/api/authentication/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { console.log('this does get called but so what?'); if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { console.log('this does get called but so what am I logged in?'); next(); }); })(req, res, next); }); app.get('/api/authentication/getloginStatus', function(req, res, next) { passport.authenticate('local', function(err, user, info) { //what do I return here? !!!? })(req, res, next); }); 

任何帮助非常感谢!

Passport.js使用当前通过身份validation的用户填充request.user 。 所以,要获取有关当前用户的信息,可以这样做

 app.get('/api/authentication/getloginStatus', function(request, response) { if(request.user) { response.json(request.user); } else { response.status(401); //Authorization required response.json({"error":"Authorization required!", "code":401"})' } });