Я пытаюсь сохранить сеанс входа в систему на узле express-mysql-сеанса js, но после успешного входа сеанс не работает.
Это мой угловой сервис:
public httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'charset=utf-8; application/json;'
})
};
login() {
return this.http.post(this.globals.baseUrl + "/login", this.httpOptions);
}
loginWithParams(email: any, password: any) {
return this.http.post(this.globals.baseUrl + "/login", { password: password, email: email }, this.httpOptions);
}
Сначала я вызываю имя входа с параметрами для создания сеанса, после того как я вызываю имя входа без параметров только для проверки того, что сеанс еще действителен, но во втором вызове сеанс исчезает.
var storeOptionMySQL = {
host: 'localhost',
port: 3306,
user: 'root',
password: '',
database: 'tracegaming', // Database name.
checkExpirationInterval: 2700000, // How frequently expired sessions will be cleared; milliseconds.
expiration: 1800000, // The maximum age of a valid session; milliseconds.
createDatabaseTable: true, // Whether or not to create the sessions database table, if one does not already exist.
schema: {
tableName: 'sessions',
columnNames: {
session_id: 'session_id',
expires: 'expires',
data: 'data'
}
}
};
var sessionStore = new MySQLStore(storeOptionMySQL, function () {
sessionStore.setExpirationInterval();
});
router.use(session({
store: sessionStore,
resave: true,
saveUninitialized: false,
secret: 'whatsup'
}));
router.post('/login', function (req, res, next) {
console.log(req.session);//second call, do not have values
var sessionValidatorResponse = new SessionValidator().validate(req.session);
if (sessionValidatorResponse.status != 1) {
if (paramsvalidator.validate('/login', req.body)) {
var email = req.body.email;
var password = sha1(req.body.password);
var loginManager = new LoginManager(pool);
loginManager.selectUserByEmail(email, password, function (result) {
if (result.status == 1 && result.data.length > 0) {
req.session.userId = result.data[0].id;
req.session.email = email;
req.session.name = result.data[0].name;
console.log(req.session); //first call and print the correct values
return res.json({ status: 1, msg: 'Login success', user: { email: email, name: result.data[0].name, id: result.data[0].id } });
} else {
return res.json({ status: 0, msg: 'Credenciales incorrectas' });
}
});
} else {
return res.json({ status: 0, msg: 'Wrong params, please check the documentation.' })
}
} else {
return res.json({ status: 1, msg: 'Login success' });
}
});
Сессия сохраняется наБаза данных правильно.
Узел работает с портом 3000 и угловым с портом 4200.
Если я использую почтальон, все работает отлично.