如何为单页应用程序使用Passport.js和Node

Exi*_*tos 6 node.js express passport.js

我认为这样的问题从来没有使我烦恼。似乎确实有0个地方需要寻找或解决。我要做的就是获取护照来拦截对“ / login”和“ / getloginStatus”的调用。

登录时,我只想使用Json对象作为{username / password}的参数。登录后,如果用户在其浏览器中具有身份验证票证,我只想返回true / false。

这就是我所拥有的,但丝毫不起作用,一半的问题似乎是我的本地策略实施从未被调用过。

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);
});
Run Code Online (Sandbox Code Playgroud)

任何帮助,不胜感激!

vod*_*095 1

Passport.js 使用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"})'
  }
});
Run Code Online (Sandbox Code Playgroud)