首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >passportjs承载策略,无论如何加载页面

passportjs承载策略,无论如何加载页面
EN

Stack Overflow用户
提问于 2014-07-30 12:32:45
回答 1查看 569关注 0票数 0

我在我的web应用程序中使用passport.js进行身份验证。我遵循给定here的示例,即以下代码:

代码语言:javascript
复制
app.get('/api/me', 
  passport.authenticate('bearer', { session: false }),
  function(req, res) {
    res.json(req.user);
  });

现在,问题是只有使用正确的access_token才能调用function(req, res)中的代码。如果登录错误,该函数将永远不会被调用,它只会返回“未授权”。有没有办法执行这个函数呢?例如,如下所示:

代码语言:javascript
复制
app.get('/api/me', 
  passport.authenticate('bearer', { session: false }),
  function(req, res) {
    if(req.user){
      res.json(req.user);
    } else {
      res.json({ error: 'whatever' })
    }
  });

here是我的代码中的一部分。

EN

回答 1

Stack Overflow用户

发布于 2014-07-30 16:02:49

Passport's authenticate page中,authenticate方法接受一个可选的自定义回调函数作为其第三个参数。

我还没有尝试过Bearer策略,但我认为它不会有什么不同。但请记住,如果您使用此回调函数,则必须使用res.logIn()自己处理login过程

所以

代码语言:javascript
复制
app.get('/api/me', 
    passport.authenticate('bearer', { session: false },
      function(err, user,info) {
         if (err) { return next(err); } // If there's an error the process
         if (!user) { return res.json({ error: 'user not found' }) } // If the user's not found
         req.logIn(user, function(err) { // User exists !
               if (err) { return next(err); }
               return res.json(req.user);
         });
     });
 );

这对你有帮助吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25028809

复制
相关文章

相似问题

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