【问题标题】:Session cookies do not change using ajax and nodejs server会话 cookie 不会使用 ajax 和 nodejs 服务器更改
【发布时间】:2013-05-20 06:07:34
【问题描述】:

我想在异步请求后更改会话 cookie,但无论我尝试什么,我总是失败。 我的要求如下:

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

在服务器上设置会话变量。

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

服务器上的设置如下:

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

我忘了提到,在简单的请求中,会话 cookie 会按预期更改。 有任何想法吗?

【问题讨论】:

    标签: ajax node.js session


    【解决方案1】:

    如果您使用 ajax 进行修改,则应在修改后调用 req.session.save()。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2022-10-24
      • 2019-01-10
      • 2013-12-20
      • 2019-10-20
      • 2023-04-05
      相关资源
      最近更新 更多