Angular 6 и узел JS выражают MySQL сеанс не работает - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь сохранить сеанс входа в систему на узле 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.

Если я использую почтальон, все работает отлично.

...