Ruby on rails 在HTTP和WebSocket服务器之间共享会话?(可选按id查找会话)

Ruby on rails 在HTTP和WebSocket服务器之间共享会话?(可选按id查找会话),ruby-on-rails,session,websocket,session-cookies,Ruby On Rails,Session,Websocket,Session Cookies,在我的初始化器中,我在一个新线程中启动rails服务器。Cookie显然不是在普通套接字消息中发送的(我得到的)。为了在消息的基础上执行身份验证,我想在内部将会话绑定到套接字。明确传输会话id对我来说不是问题,但我还没有找到通过会话id检索会话的方法。这可能吗?我来看看: def decrypt_session_cookie(cookie) cookie = CGI.unescape(cookie) config = Rails.application.config encrypt

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

我来看看:

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
资料来源:

通过这种方式,我能够解密我刚在初始消息中发送的cookie