gpt4 book ai didi

session - Express.js 3 使用来自 Backbone.js 的每个 XHR 请求创建新 session

转载 作者:行者123 更新时间:2023-12-02 14:50:29 26 4
gpt4 key购买 nike

我有一个 Backbone 应用程序,它使用 un/pw 查询我的 Express 服务器,进行身份验证,然后将帐户信息(来自 MongoDB)与新的 sessionID 一起发送回客户端。当我需要更多数据时,我将 session ID 附加到 .fetch() 选项。然而,即使我的 session 已成功存储在 Redis 中,Express 也会创建一个新 session 。

这是检查客户端是否尝试使用我的 api 的中间件

var _restrictApi = function(req, res, next) {
if (req.url.match(/api/)) {
res.xhrAuthValid = req.param('sessionId') == req.sessionID;
if (res.xhrAuthValid || (req.method=='GET' && req.url.match(/api\/account/))) {
console.log('API access granted', req.url);
console.dir(req.session);
next();
} else {
console.log('API access BLOCKED', req.url);
console.log(req.param('sessionId'), req.sessionID);
console.dir(req.session);
res.send(403, 'Forbidden');
}
} else {
next();
}
};

我的 Backbone 应用程序在加载时进行了几次 .fetch() 调用。首先,登录,然后抓取用户的事件。这是 Express 服务器控制台日志:

API access granted /api/account?email=test%40gmail.com&password=somepw
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true } }
_checkAccount test@gmail.com
pw matches
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true },
account:
{ _id: 500471eb8bfff124ce984917,
dtAdd: '2012-07-16T20:07:58.671Z',
email: 'test@gmail.com',
pwHash: '$2a$10$2KJXrZeAGW58Kp9JQDL9B.K2Fvu2oE3oqWKRl55o8MeXGHA/zCBE.',
sessionId: 'iqYjOA7CeQHny9cm8zOWERjv' } }
API access BLOCKED /api/events?accountId=500471eb8bfff124ce984917&sessionId=iqYjOA7CeQHny9cm8zOWERjv
iqYjOA7CeQHny9cm8zOWERjv rsSXKtzXNNiq8x3+pUN9JXWF
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true } }

最佳答案

通过签署 sessionID 创建 connect.sid:

cookie = require('cookie-signature')
res.send('connect.sid=s%3A'+cookie.sign(req.sessionID, req.secret))

将其存储在本地存储中,并为每个 AJAX 请求设置 Cookie header :

r.setRequestHeader('Cookie', window.localStorage['connect.sid'])

这有效。

关于session - Express.js 3 使用来自 Backbone.js 的每个 XHR 请求创建新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com