2017-12-30 62 views
1

내 문제는 엄격하게 '/'경로 주위에 있습니다. 이것이 루트 루트라고 생각합니다. 사용자가 내 사이트에 연결하면 해당 사용자에게 세션 데이터가 있는지 확인하여 브라우저를 닫을 때 항상 다시 로그인 할 필요가 없도록합니다. 사용자에게 세션 데이터가 없으면 내 웹 사이트가 가입 라우터로 리디렉션됩니다.루트 경로가 리디렉션되지 않음

내 웹 사이트가 www.example.com 인 것처럼 해봅시다. www.example.com/buy로 이동하여 사용자에 대한 세션 데이터가없는 경우 웹 사이트는 자동으로 www.example.com/signup으로 리디렉션합니다. www.example.com/sell을 입력하고 세션 데이터가없는 경우에도 마찬가지입니다. 그러나 www.example.com을 입력하고 세션 데이터가없는 경우 URL은 www.example.com/signup으로 리디렉션되지 않습니다.

왜 루트 경로에 대한이 '특별한'대우가 있으며 다른 경로와 동일한 동작을 수행하려면 어떻게해야합니까? 나는이 문제에이 속하는 생각 내 server.js에서

코드 : 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'); 
    } 
}); 

전체 페이지는

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

답변

0

희망이 비슷한 다른 사람을 도움이 될 것입니다 감사 문제. 나는 이전 게시물에서 내 대답을 찾을 수있었습니다. 나는 express.static에 false 값을 가진 index 속성을 추가해야했습니다.

express.static handling root url request