2017-11-03 5 views
0

Ich benutze Ausdruck-Sitzung und Express-Mysql-Sitzung zum Speichern in der Datenbank, aber auf jedem Ajax gibt neue Session-ID zurück. Für weitere Informationen rufen Sie nur von http. Dieses Problem tritt nicht auf, wenn ich die Sicherheit des Browsers deaktiviere.Express-Sitzung - Ich benutze Ausdruck-Sitzung und Express-Mysql-Sitzung zum Speichern in der Datenbank

var express = require('express'); var mysql = require('mysql'); var 
    jwt = require('jsonwebtoken'); var 
    session=require('express-session'); var MySQLStore = 
    require('express-mysql-session')(session); 

    var options = { host: 'localhost',// Host name for database 
    connection. port: 3306,// Port number for database connection. user: 
    'root',// Database user. password: '',// Password for the above 
    database user. database: 'node',// Database name. 
    checkExpirationInterval: 900000,// How frequently expired sessions 
    will be cleared; milliseconds. expiration: 1512671400000,// 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. connectionLimit: 10,// Number of connections 
    when creating a connection pool schema: { tableName: 'sessions', 
    columnNames: { session_id: 'session_id', expires: 'expires', data: 
    'data' } } }; 

    var connection = mysql.createConnection(options); // or 
    mysql.createPool(options); var sessionStore = new MySQLStore({}/* 
    session store options */, connection); var router = 
    express.Router(); 

    router.use(session({ name: 'session_cookie_name', secret: 
    'session_cookie_secret', store: sessionStore, resave: false, 
    saveUninitialized: true, cookie: { path: '/', httpOnly: false, 
    secure: false, maxAge: 365 * 24 * 60 * 60 * 1000 } })); 

    router.get('/session', function(req, res, next) { 
    res.setHeader("Access-Control-Allow-Origin", "*"); 
    res.setHeader("Access-Control-Allow-Headers", "Origin, 
    X-Requested-With, Content-Type, Accept"); res.send(req.sessionID); 
    }); 
- 

Antwort

0

Dieses Problem kommt nicht, wenn ich die Sicherheit der Browser

deaktivieren

secure: true bedeutet, dass Ihre Cookie nur über https doc übertragen wird.

Also, beim Zugriff über http, der Browser sendet das Cookie nicht, und der Server denkt, dass es eine neue Sitzung ist.

+0

dann nur mögliche Möglichkeit, Sitzung durch Deaktivieren der Browsersicherheit zu verwenden? – Brijesh

+0

Nein, Sie können es aktivieren, wenn Sie https verwenden. –

+0

Gabriel eine Sache, die ich fragen möchte, wenn ich am lokalen arbeite dann gibt es einen Weg, um Cookies im Browser – Brijesh

Verwandte Themen