2013-07-22 28 views
5

ユーザーがDeviseを使用してログアウトしたときにセッションを無効にしたい場合は、ユーザーがログアウトしたときにキャッチするコールバックがあり、セッションのハイジャックに対する保護が強化されます。Rails/w Deviseのログアウト時に特定のセッションを無効にするには?

class ApplicationController < ActionController::Base 
    def sign_out(*args) 
    super(*args) 
    reset_session 
    end 
end 

これは、サーバー側に保存されているセッション情報を削除するため、無効にするということでした。

ただし、ログアウトする前に取得したセッションIDを使用してログインできます。 どのように動作するのか誤解していますか?私はこのセッションだけを無効にしたいだけで、すべてを無効にしたくない。

私はsession_storeにデフォルトを使用しています。

+0

どこから 'session_id'を取得していますか?また、他にどのセッション固有のカスタムコードを追加しましたか? – pungoyal

+0

私はreset_sessionでsession_idを取得する必要がないという印象を受けましたが、セッション値に影響を与えるカスタムコードは追加していません。 – Saifis

答えて

5

は、いくつかのグーグルと瞑想の後、私は

、私のニーズに合わせて変更することができ、このquestion、APON来たすべて私がやった

application_controller.rb

def sign_out(*args) 
    current_user.update_attribute(:current_sign_in_token, "") 
    super 
    end 

無効になりますsign_in_tokenはセッションを無効にするので、セッションIDをハイジャックすると引き続きあなたは追い出されます。

関連する問題