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