2013-05-24 19 views
5

Zaman uyumsuz bir istek sonrasında bir oturum çerezi değiştirmek istiyorum ancak ne denediğime bakmadan başarısız olmaya devam ediyorum.Oturum çerezleri ajax ve nodejs sunucusu kullanılarak değiştirilmiyor

$.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'); }); 

sunucuda oturum değişkenleri ayarlama şu şekildedir: Benim talebidir. aşağıdaki gibi

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); 
}; 

sunucuda ayar şunlardır:

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); 

Ben beklendiği gibi oturum çerezleri değiştirmek basit isteklerde belirtmeyi unutmuşum. Herhangi bir fikrin var mı?

cevap

6

Eğer ajax ile yapıyorsanız, değişikliklerden sonra req.session.save() yöntemini çağırmalısınız.

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); 
}; 
İlgili konular