2013-05-24 14 views
5

Chcę zmienić plik cookie sesji po asynchronicznym żądaniu, ale bez względu na to, co próbowałem, ciągle się nie udaje. Moja prośba jest następująca:Pliki cookie sesji nie zmieniają się przy użyciu ajax i serwera nodejs

$.ajax({ 
    type: "POST", 
    url: "/setStatus", 
    data: { userId : _userId, token: _token, tokenSecret : _tokenSecret, service : service, loggedIn : _loggedIn, authorized : _authorized }, 
    xhrFields: { withCredentials: true }, 
    crossDomain: true 
}).done(function(reply) { alert('finished'); }); 

Ustawianie zmiennych sesji na serwerze.

exports.setStatus = function(req, res) 
{ 
    req.session.userId = req.body.userId; 
    req.session.token = req.body.token; 
    req.session.tokenSecret = req.body.tokenSecret; 
    req.session.service = req.body.service; 
    req.session.loggedIn = req.body.loggedIn; 
    req.session.authorized = req.body.authorized; 

    res.header('Access-Control-Allow-Credentials', 'true'); 
    res.writeHead(200); 
}; 

Ustawienie na serwerze są następujące:

app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.cookieParser()); 
app.use(express.bodyParser()); 
app.use(express.session({ secret: 'keyboard cat', store: new RedisStore({ host: 'localhost', port: 3000, client: dbcon })})); 
app.use(express.methodOverride()); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(app.router); 

Zapomniałam wspomnieć, że na prostych wniosków ciasteczka sesyjne zmieniać zgodnie z oczekiwaniami. Jakieś pomysły?

Odpowiedz

6

Powinieneś wywołać metodę req.session.save() po modyfikacji, jeśli robisz to z ajaxem.

exports.setStatus = function(req, res) 
{ 
    req.session.userId = req.body.userId; 
    req.session.token = req.body.token; 
    req.session.tokenSecret = req.body.tokenSecret; 
    req.session.service = req.body.service; 
    req.session.loggedIn = req.body.loggedIn; 
    req.session.authorized = req.body.authorized; 
    req.session.save(); // This saves the modifications 

    res.header('Access-Control-Allow-Credentials', 'true'); 
    res.writeHead(200); 
}; 
Powiązane problemy