使用扭矩箱会话限制用户在扭矩箱中的登录



我想使用torquebox并限制用户在jruby-rails应用程序上的登录,这样他就不能从多个浏览器登录。我在activerecord会话中做到了这一点,当有人登录并使旧会话无效时,我会跟踪用户id和会话id。

如何在Torquebox中执行类似操作?我在TorqueBox::Session模块上看不到类方法,所以我可以使其他会话无效,只是访问intance的方法。会议的运作机制尚不清楚。我在看这里:https://github.com/torquebox/torquebox/tree/2x-dev/gems/web/lib

如果您在本地存储了当前会话对象,例如current_session:

TorqueBox::Session::ServletStore.load_session_data(current_session)

这将允许您查看当前会话数据,它还附带一个姊妹功能,使您能够在会话存储store_session_data(...):中设置数据

TorqueBox::Session::ServletStore.store_session_data(current_session, data)

您还可以将data设置为{}(空哈希)以使其无效(出于大多数目的)。

当前会话对象的可用性将因范围而异。例如,在stomplet中,为了查看会话数据,我必须对订阅者进行一些内省以获得current_session对象:

class ChatStomplet
# ...
def on_subscribe (subscriber)
@subscribers[ session(subscriber)[:current_user].username ] << subscriber
end
# ...
def session (subscriber)
TorqueBox::Session::ServletStore.load_session_data(subscriber.getSession)
end
end

您可能也应该了解一下ActionDispatch::Session::TorqueBoxStoreapi。

我个人还没有找到太多关于这方面的文件。事实上,我仍在寻找一种方法来查找所有当前活动的会话。如果他们能实现AbstractStore的接口,这将有所帮助,因为与当前Rails约定的兼容性将有很大的帮助。

我知道这不是一个完整的答案,但希望它能为你的旅行提供一些线索。。

TorqueBox(至少2.x)将Java会话ID存储在session[:session_id]中。如果你需要从中间件中获得它,它在env['rack.session'][:session_id]中可用。

相关内容

  • 没有找到相关文章

最新更新