2012-10-16 37 views
1

我想使用torquebox並限制用戶在jruby rails應用上的登錄,以便他不能從多個瀏覽器登錄。我通過記錄用戶ID和會話ID以及有人登錄並使舊會話失效時,使用activerecord會話做到了這一點。用扭矩盒會話限制用戶登錄扭矩盒

我如何在Torquebox中做類似的事情?我在TorqueBox :: Session模塊上看不到類方法,所以我可以使其他會話無效,只是訪問intance的方法。會議如何運作的機制尚不清楚。我期待在這裏:https://github.com/torquebox/torquebox/tree/2x-dev/gems/web/lib

回答

0

如果您在當前會話對象存儲在本地,在說current_session

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

這將允許您查看當前進程的數據,它是伴隨着一個妹妹功能這使您可以在還會話存儲設置數據,store_session_data(...)

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

您還可以設置data{}(空哈希)以使它無效(F或大多數意圖和目的)。

當前會話對象的可用性取決於範圍。例如,在一個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::TorqueBoxStore API偷看了。

我沒有親自找到這方面的文檔。事實上,我仍然在尋找一種方法來查找所有當前活動的會話。如果他們實現AbstractStore's interface,這將有所幫助,因爲與當前Rails約定的兼容性會很長。

我知道這是不是一個完整的答案,但希望它會闡明您的旅行一些輕..

0

TorqueBox(2.x中,至少)在session[:session_id]存儲Java會話ID。如果您需要從中間件獲得它,則可在env['rack.session'][:session_id]中獲得。