如何将用户重定向到另一个页面?

时间:2018-09-27 07:45:56

标签: node.js express redirect passport.js

我陷入一个问题。从标题可以猜到,问题是我正在制作重定向循环。简单的情况,但是作为一个初学者,我无法解决。我将提供我的代码供您查看问题。 这就是我的快速路由器`

const passport = require('passport');

module.exports = (app) => {
  app.get('/auth/eventbrite',
    passport.authenticate('eventbrite', {}));

  app.get('/auth/eventbrite/callback',
    passport.authenticate('eventbrite', { failureRedirect: '/' }),
    (req, res) => {
      if (!req.user) {
        throw new Error('user null');
      }
      res.redirect('/dashboard');
    });

  app.get('/api/logout', (req, res) => {
    req.session = null;
    req.logout();
    res.redirect('/');
  });

  app.get('/api/current_user', (req, res) => {
    res.send(req.user);
  });

  app.get('/dashboard', (req, res) => {
    console.log(req.user, 'user');
    if (!req.user) {
      res.redirect('/');
    } else {
      res.redirect('/dashboard');
    }
  });
};

您会注意到,在护照认证和获取请求中,我都将用户重定向到/ dashboard。我的目标是防止未经身份验证的用户进入仪表板。

1 个答案:

答案 0 :(得分:0)

如果用户已登录并重定向到仪表板,则该仪表板会将其再次重定向到仪表板。这将产生一个无限循环。相反,如果用户已登录,则仪表板路由应响应。您最有可能希望向他发送仪表板html页面。