2017-12-30 58 views
1

私の問題は厳密に '/'ルートの周りにあります。私はこれをルートルートといいます。ユーザーが自分のサイトに接続すると、そのユーザーにセッションデータがあるかどうかをチェックして、ブラウザが閉じられたときにいつでも再ログする必要がないようにします。ユーザーにセッションデータがない場合、私のウェブサイトはサインアップルータにリダイレクトされます。ルートルートがエクスプレスでリダイレクトされない

私のウェブサイトはwww.example.comのふりをしましょう。私がwww.example.com/buyに行き、ユーザーにセッションデータがない場合、Webサイトは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

関連する問題