2012-10-16 2 views
1

토크 박스를 사용하고 여러 브라우저에서 로그인 할 수 없도록 jruby 레일스 앱에서 사용자 로그인을 제한하고 싶습니다. 나는 누군가가 로그인하고 오래된 세션을 무효화 할 때 사용자 ID와 세션 ID를 추적하여 activerecord 세션으로이 작업을 수행했습니다.토크 박스 세션에서 토크 박스 내 사용자 로그인을 제한하십시오

Torquebox에서 비슷한 기능을 수행하려면 어떻게해야합니까? 나는 TorqueBox :: Session 모듈에 클래스 메소드를 볼 수 없기 때문에 다른 세션을 무효화 할 수 있습니다. intance에 액세스하는 방법은 없습니다. 세션이 어떻게 작동하는지에 대한 메커니즘은 분명하지 않습니다. 이것은 현재 세션 데이터를 볼 수 있습니다

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

, 그것은 자매 기능에 의해 동반 : https://github.com/torquebox/torquebox/tree/2x-dev/gems/web/lib

답변

0

현재 세션 객체가 current_session 말에, 로컬에 저장된 당신이 한 경우 : 여기 찾고 있어요 이는, 당신은 또한 세션 저장소에있는 데이터를 설정할 수 있습니다 store_session_data(...) : 또한 data{}에 (빈 해시)을 설정할 수 있습니다

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

그것을 무효화 (F를 또는 대부분의 의도와 목적).

현재 세션 개체의 가용성은 범위에 따라 달라집니다. 또한, 당신은 아마도 ActionDispatch::Session::TorqueBoxStore API를 엿봄이 있어야합니다

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 

: 예를 들어, stomplet에, 나는 세션 데이터를 참조하기 위해 current_session 개체를 가져 가입자에 대한 몇 가지 반성을해야합니다.

개인적으로 이에 대한 많은 문서를 찾을 수 없었습니다. 지금 현재 진행중인 모든 세션을 찾는 방법을 찾고 있습니다. 현재 레일스 협약과의 호환성이 먼 길이므로 AbstractStore's interface을 구현하면 도움이 될 것입니다.

0

TorqueBox (2.X는, 적어도) session[:session_id]에서 자바 세션 ID를 저장 .. 나는 이것이 완전한 답변하지 않습니다 알아,하지만 희망이 당신의 여행에 도움이 되거 것입니다. 미들웨어에서 가져와야하는 경우 env['rack.session'][:session_id]에 있습니다.