Я новичок в nodejs и пытаюсь создать простую систему входа в систему, используя экспресс.Но экспресс-сессия станет неопределенной после того, как я перенаправлю ее на другой маршрут.
lib / mysql.js
const MySQL = require('mysql');
const connection = MySQL.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '',
database: 'chat'
});
module.exports = connection;
App.js
const app = require('express')();
const server = require('http').Server(app);
const port = 3000;
//Post request submit
const bodyParser = require('body-parser');
//Mysql setup
const conn = require('./lib/mysql');
//Session setup
const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);
const sessionStore = new MySQLStore({clearExpired: true, checkExpirationInterval: 30000, expiration: 90000},conn);
server.listen(port, () => {
console.log(`Listening to port ${port}`);
});
app.set('views', './views');
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(session({
key: 'basic_session',
secret: 'basic_session',
store: sessionStore,
resave: false,
saveUninitialized: false
}));
app.get('/', (req,res) => {
console.log(req.session.username);
if(req.session.username == null) {
res.redirect('/login');
} else {
res.render('home.ejs', {username: req.session.username});
}
});
app.get('/login', (req, res) => {
res.render('login', {title: 'Simple chat'});
});
app.post('/login', (req, res) => {
let username = req.body.username;
let password = req.body.password;
//console.log(username +" " + password);
conn.query("SELECT * FROM `account` WHERE `username`=? AND `password`=?", [username,password], (error, results, fields) => {
if(error) throw error;
if(results.length != 0) {
req.session.uid = results[0].id;
req.session.username = username;
res.redirect('/');
} else {
console.log('Invalid username or password');
res.redirect('back');
}
});
});
Я ожидаю, что сессия ещепосле входа в систему, но после перенаправления сеанс не определен.Но когда я снова просматриваю localhost: 3000 или обновляю страницу, все нормально, пока не закончится сессия.