首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单页面应用中使用Passport.js和Node

如何在单页面应用中使用Passport.js和Node
EN

Stack Overflow用户
提问于 2014-07-10 05:42:53
回答 1查看 2.5K关注 0票数 6

我认为从来没有像这样困扰过我的问题。似乎确实有0个地方可以查看或回答这个问题。我所要做的就是让passport拦截对'/login‘和'/getloginStatus’的调用。

登录时,我只想使用Json对象作为{用户名/密码}的参数。当我登录时,如果用户的浏览器中有一个身份验证票证,我只想返回true/false。

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

代码语言:javascript
运行
复制
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);
});

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-07-10 08:02:42

Passport.js使用当前通过身份验证的用户填充request.user。因此,要获取有关当前用户的信息,可以执行以下操作

代码语言:javascript
运行
复制
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"})'
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24664264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档