在 HTTP 和 WebSocket 服务器之间共享会话? (alt. 按 id 查找会话)

Posted

技术标签:

【中文标题】在 HTTP 和 WebSocket 服务器之间共享会话? (alt. 按 id 查找会话)【英文标题】:Share sessions between HTTP and WebSocket server? (alt. find session by id) 【发布时间】:2014-02-09 19:25:42 【问题描述】:

在我的初始化程序中,我在一个新线程中启动了一个 Rails 服务器。 Cookie 显然不是在正常的套接字消息中发送的(我得到了)。为了基于消息执行身份验证,我想在内部将会话绑定到套接字。显式传输 session_id 对我来说不是问题,但我还没有找到通过它的 ID 检索会话的方法。这可能吗?

【问题讨论】:

【参考方案1】:

我去:

def decrypt_session_cookie(cookie)
  cookie = CGI.unescape(cookie)
  config = Rails.application.config

  encrypted_cookie_salt = config.action_dispatch.encrypted_cookie_salt               #     "encrypted cookie" by default
  encrypted_signed_cookie_salt = config.action_dispatch.encrypted_signed_cookie_salt # "signed encrypted cookie" by default

  key_generator = ActiveSupport::KeyGenerator.new(config.secret_key_base, iterations: 1000)
  secret = key_generator.generate_key(encrypted_cookie_salt)
  sign_secret = key_generator.generate_key(encrypted_signed_cookie_salt)

  encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret)
  encryptor.decrypt_and_verify(cookie)
end

来源:http://big-elephants.com/2014-01/handling-rails-4-sessions-with-go/

这样我就能够解密我刚刚在初始消息中发送的 cookie。

【讨论】:

以上是关于在 HTTP 和 WebSocket 服务器之间共享会话? (alt. 按 id 查找会话)的主要内容,如果未能解决你的问题,请参考以下文章

如何理解 TCP/IP,SPDY,WebSocket 三者之间的关系

WebSocket协议分析

使用WebSocket进行全双工通信

WebSocket

WebSocket

WebSocket是什么?