1

トルクボックスを使用して、jruby rails アプリでのユーザーのログインを制限して、複数のブラウザーからログインできないようにしたいと考えています。誰かがログインしたときにユーザーIDとセッションIDを追跡し、古いセッションを無効にすることにより、アクティブレコードセッションでそれを行いました。

Torqueboxで同様のことを行うにはどうすればよいですか? TorqueBox::Session モジュールにクラス メソッドが表示されないため、インスタンスにアクセスする方法だけで、他のセッションを無効にすることができます。セッションがどのように機能するかのメカニズムは明確ではありません。私はここを見ています: https://github.com/torquebox/torquebox/tree/2x-dev/gems/web/lib

4

2 に答える 2

0

現在のセッションオブジェクトをローカルに保存している場合は、次のようになりますcurrent_session

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

これにより、現在のセッションデータを表示できるようになります。また、セッションストアにデータを設定することもできる姉妹関数が付属していますstore_session_data(...)

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

data(空のハッシュ)に設定して無効にすることもできます{}(ほとんどの目的と目的で)。

現在のセッションオブジェクトの可用性は、スコープによって異なります。たとえば、ストンプレットで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も覗いてみるべきでしょう。

私は個人的にこれに関する多くのドキュメントを見つけることができませんでした。現状では、現在アクティブなすべてのセッションを見つける方法をまだ探しています。現在のRailsの規則との互換性が大いに役立つので、AbstractStoreのインターフェースを実装する場合に役立ちます。

これが完全な答えではないことは知っていますが、うまくいけば、それはあなたの旅行にいくらかの光を当てるでしょう。

于 2012-12-03T03:43:39.727 に答える
0

TorqueBox (少なくとも 2.x) は Java セッション ID を に保存しますsession[:session_id]。ミドルウェアから取得する必要がある場合は、env['rack.session'][:session_id].

于 2013-10-30T18:53:13.263 に答える