护照持有者策略,无论如何加载页面



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

app.get('/api/me', 
  passport.authenticate('bearer', { session: false }),
  function(req, res) {
    res.json(req.user);
  });

现在,问题是function(req, res)内部的代码只能用正确的access_token调用。如果登录是错误的函数永远不会被调用,它只是返回"未经授权"。有没有一种方法来执行这个函数呢?例如:

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

显然不起作用,因为函数永远不会被调用!

这是我的代码的一个馅饼。我基本上希望我的路由器渲染页面,无论如何,即使有错误的凭据。

从Passport的身份验证页面,authenticate方法接受一个可选的自定义回调函数作为其第三个参数。

我还没有尝试过Bearer策略,但我认为它不会有任何不同。但是请记住,如果你使用这个回调函数,你必须自己处理login进程,使用res.logIn()

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

对你有帮助吗?

相关内容

最新更新