- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试解决访问 socket.io 中的 session 变量的臭名昭著的问题。我基本上已经阅读了 Google 上有关该主题的所有链接,但我仍然在苦苦挣扎。
在我完成所有路由之后,我有这个:
io.set('authorization', function(data,accept)
{
data.cookie = cookie.parse(data.headers.cookie);
---> console.log(data.cookie);
data.sessionID = connect.utils.parseSignedCookie(data.cookie['express.sid'].split('.')[0].substring(2), conf.sessionSecret);
sessionStore.get(data.sessionID, function (err, session)
{
console.log(session);
});
});
不幸的是,我画了一个箭头的console.log返回了这个:
{ 'connect.sid': 's:3pIi31DPthO8KVOjqzYpeL75.nHvKOpMZsUsyto7CtBJgcJZIiBSN+IC2/aD0GcfYftU' }
当然,我收到了有关express.sid未定义的错误。当我将express.sid更改为connect.sid时,我的 session 变量未定义。
我真的很难解决这个问题 - 我已经花了几个小时了。有什么帮助吗?
编辑:总结一下我已解决的问题:
最佳答案
你已经很接近了。实际上,在将 cookie 传递给解析器之前,您不需要修改它。
io.set('authorization', function(handshake, callback) {
handshake.cookie = cookie.parse(handshake.headers.cookie);
handshake.sessionID = connect.utils.parseSignedCookie(handshake.cookie['express.sid'], conf.sessionSecret);
sessionStore.get(handshake.sessionID, function(err, session) {
// the session would be here
});
});
但是,由于您可以访问 cookie 解析器中间件,我个人会这样做:
var parseCookie = express.cookieParser(conf.sessionSecret);
io.set('authorization', function(handshake, callback) {
if (handshake.headers.cookie) {
parseCookie(handshake, null, function(err) {
handshake.sessionID = handshake.signedCookies['express.sid'];
sessionStore.get(handshake.sessionID, function(err, session) {
// the session would be here
});
});
}
});
此方法收集 cookie 解析过程中可能出现的任何错误,并通过传递 handshake
来工作。对象就好像它是 HTTP 请求对象一样,因为它们都有 headers.cookie
属性(property)。然后cookie解析器将解析cookie并将它们分配给handshake
对象,这样您就可以从 handshake.signedCookies
找到 session ID .
关于node.js - Express cookieSession 键未显示在数据 header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19553615/
在我的 node.js 服务器上(运行 express 和 socket.io),当有人连接时,我将他们添加到一个数组中并保存他们在数组中的位置进入他们的 session ,这样每个连接都可以访问他们
我对 session 有很好的基本了解。 有 2 个选项可以将 session 与 Express 和 Node.js 结合使用。 express.session express.cookieSess
cookieSession和express中的cookie有什么区别? 最佳答案 cookieParser middleware解析 HTTP Cookie: header 以填充 req.cooki
我通过使用 iisnode 将 Node 与 IIS 一起使用我在设置 CookieSession 选项 secure:true 时遇到问题。 我在 IIS 上使用 HTTPS,并将任何 HTTP 重
cookieParser() 为我们提供了使用密文对 cookie 进行签名的选项,这对于防止篡改非常有用。我知道 cookie 是用特殊值签名的,以防止篡改。 我刚刚发现 cookieSession
我正在尝试使用 connect 的内置 cookieSession 对象,但我无法让它与 express 一起正常工作。 我有这个应用程序: var express = require('expres
我正在尝试解决访问 socket.io 中的 session 变量的臭名昭著的问题。我基本上已经阅读了 Google 上有关该主题的所有链接,但我仍然在苦苦挣扎。 在我完成所有路由之后,我有这个: i
** 已解决 ** 我已经为这个问题苦苦挣扎了一段时间。那里有很多类似的帖子,但所提出的解决方案都不适合我。 我正在使用带有 cookie session 的 Express 和 Passport。当
我正在使用 cookieSession 尝试使用未经身份验证的用户的 cookie 填充 req.session 对象。但是,在向 cookieSession 传递一个 key 后,req.sessi
我正在研究 facebook 授权,发现护照不能与 cookieSession() 一起使用,只能与 session() 一起使用。在第一种情况下,req.user 始终未定义。有可能让它发挥作用吗?
我想在 Passport 中使用 cookie session 存储,因为内存存储不是为生产而设计的: Warning: connection.session() MemoryStore is not
我正在使用socket.io的authorize方法(详细来说here)通过检查与用户关联的cookie来检查用户是否有权使用我的应用程序。 上面的博客文章相当简单,但我使用 cookieSessio
我正在使用 Connect 的 cookieSession() 设置 cookie。这似乎加密了 cookie 的 secret 值,返回类似 's:j:{}.8gxCu7lVJHVs1gYRPFDA
website没有为使用 app.use(express.cookieSession()); 指定任何“ secret ”要求,但是当在 express 中使用相同内容时,它要求“需要 secret
有两个与 session 相关的中间件与 Connect/Express 捆绑在一起。有什么区别?我该如何选择? 我假设 session中间件同cookieSession中间件,但具有额外的存储机制。
我正在尝试使用 Connect/Express cookieSession() 将我的 node.js session 存储在 cookie 中(从而避免服务器端 session 存储)。这将帮助我在
创建新用户帐户时,我创建 newUser,这是一个 Mongoose 模型实例,如下所示: _events: Object errors: undefined isNew: false save: f
创建新用户帐户时,我会创建 newUser,它是一个 Mongoose 模型实例,如下所示: _events: Object errors: undefined isNew: false save:
我是一名优秀的程序员,十分优秀!