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

7
我从未遇到过像这样令人烦恼的问题。似乎完全没有地方可以查找或者回答这个问题。我想做的就是获取护照(passport)以截取对"/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);
});

非常感谢您提供的帮助!


你解决了吗?我卡住了。 - youbetternot
不,我没有,我只是放弃了,Node 太难了! - Exitos
1个回答

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"})'
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接