Сессия становится неопределенной после перенаправления в nodejs express - PullRequest
0 голосов
/ 01 января 2019

Я новичок в 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 или обновляю страницу, все нормально, пока не закончится сессия.

...