0

我正在尝试在 Torquebox 中为 Web 套接字实现用户身份验证,根据 Internet 上的所有内容,如果我在 stomp 服务器旁边运行 Web 应用程序,我应该能够从 stomplet 中访问 HTTP 会话,其中我是。

我的配置看起来像这样

web do
  context '/'
  host 'localhost'
end

stomp do
  host 'localhost'
end

stomplet GlobalStomplet do
  route '/live/socket'
end

我也尝试过评论网络和踩块,但没有任何改变。

基本上,套接字正在工作,我可以连接和订阅。在我的 stomplet 中,该on_subscribe方法有一些调试行

Rails.logger.debug "SESSION = #{subscriber.session}"
Rails.logger.debug "SESSION 2 = #{subscriber.getSession.getAttributeNames}"
Rails.logger.debug "SOCKET SESSION = #{TorqueBox::Session::ServletStore.load_session_data(subscriber.getSession)}"

以及这些事情的任何其他组合,但在每种情况下,我都会得到一个空会话。唯一的例外是,当我显式加载会话时(如上面的最后一个调试行),我的会话包含一个会话 ID 和类似的东西TORQUEBOX_INITIAL_KEYS,但会话 ID 不是 HTTP 会话,只是类似的东西session-1,没有什么用处。

我在 rails 应用程序中有一个初始化程序,用于设置扭矩盒会话存储

MyApp::Application.config.session_store :torquebox_store, {
  key: '_app_key'
}

我没有收到任何异常,所以我认为没有明显的问题,但我已经尝试了所有我能想到的方法,但仍然没有可以使用的会话。

我究竟做错了什么?

我正在使用 Torquebox 3.1.0、Rails 4 和 jRuby 1.7.11

4

1 回答 1

0

好吧,看来我本身并没有做错任何事情,但是 Torquebox 中似乎存在一个潜在的错误(现在提交错误报告)

似乎扭矩盒网络应用程序对我为会话存储分配自定义键感到非常满意,并且每个都按预期工作。不幸的是,似乎 stomplets 只是在寻找普通的JSESSIONID,而忽略了自定义的键。

为了确认,我删除了自定义键,它起作用了。然后我重新引入它,它再次停止工作。在密钥仍然存在的情况下,我手动设置了 JSESSIONID cookie 值,然后重新连接,突然我的会话出现了。

于 2014-04-01T09:08:35.630 回答