代码之家  ›  专栏  ›  技术社区  ›  Programmer wannabe

在Express中根路由未重定向

  •  2
  • Programmer wannabe  · 技术社区  · 7 年前

    我的问题严格围绕着“/”路线。我认为这被称为根路径。当用户连接到我的网站时,我会检查该用户是否有会话数据,这样他/她就不必在浏览器关闭时总是重新登录。如果用户没有会话数据,那么我的网站将被重定向到注册路由器。

    让我们假设我的网站是www.example。通用域名格式。如果我去www.example。com/buy,并且我没有用户的任何会话数据,该网站会自动重定向到www.example。按预期注册。如果我输入www.example,同样的情况也会发生。com/sell,不存在会话数据。但如果我只输入www.example。com并且仍然没有会话数据,url不会重定向到www.example。com/注册。

    为什么对根路径进行这种“特殊”处理,我如何使其遵循与其他路径相同的行为?

    我的 server.js 我认为这与这个问题有关:

    app.get('/session', (req, res) => {
      res.send(req.session.auth);
    })
    .get('/signup', (req, res) => {
      if (!req.session.auth) {
        res.sendFile(path.join(__dirname, 'client/public/index.html'));
      } else {
        return res.redirect('/');
      }
    })
    .get('*', (req, res) => {
      if (req.session.auth) {
        res.sendFile(path.join(__dirname, 'client/public/index.html'));
      } else {
        return res.redirect('/signup');
      }
    }); 
    

    服务器的整页。js公司

    const express = require('express'),
      app = express(),
      bodyParser = require('body-parser'),
      path = require('path'),
      initDatabase = require('./db/dbConfig'),
      port = process.env.PORT || 9000,
      io = require('socket.io').listen(app.listen(port, () => {
        initDatabase();
        console.log('Successfully connected to port ', port);
      })),
      session = require('express-session'),
      MySQLStore = require('express-mysql-session')(session),
      sessionStore = new MySQLStore({
        host: require('./actualKeys').host,
        port: 3306,
        user: require('./actualKeys').username,
        password: require('./actualKeys').password,
        database: require('./actualKeys').database,
        checkExpirationInterval: 60000,
        expiration: 43200000,
      }),
      users = {},
      rooms = {};
    
    // express
    
    app.use(express.static('client/build'))
    .use(bodyParser.urlencoded({
      extended: true,
    }))
    .use(bodyParser.json())
    .use(session({
      secret: require('./actualKeys').sessionCode,
      store: sessionStore,
      resave: false,
      saveUninitialized: true,
    }));
    
    require('./server/routers/router')(app);
    
    app.get('/session', (req, res) => {
      res.send(req.session.auth);
    })
    .get('/signup', (req, res) => {
      if (!req.session.auth) {
        res.sendFile(path.join(__dirname, 'client/public/index.html'));
      } else {
        return res.redirect('/');
      }
    })
    .get('*', (req, res) => {
      if (req.session.auth) {
        res.sendFile(path.join(__dirname, 'client/public/index.html'));
      } else {
        return res.redirect('/signup');
      }
    }); 
    

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Programmer wannabe    7 年前

    希望这能帮助其他有类似问题的人。我能够从一个旧帖子中找到我的答案。我不得不添加带有假值的索引属性来表示。静止的

    express.static handling root url request