ブラウザを終了してもDeviseのセッションが切れないようにする


Deviseで「セッション タイムアウト」とかで検索するとDeviseのtimeoutableを有効にしてinitializersconfig.timeout_inを設定したら良いという記事がたくさん出てきます。

ただこれを設定していても、Railsではデフォルトでセッションクッキー(ブラウザを終了すると消える)設定になっているので、ブラウザを終了してしまうとセッションが切れてしまい困りました。

結論

  • config/initializers/session_store.rbexpire_afterにセッションを維持したい期間を記入してサーバーを再起動すればOKです
Rails.application.config.session_store :cookie_store, key: '_xxxx_session', expire_after: 1.week

Deviseのtimeoutableと同じ期間にしていないとDevise側で強制ログアウトされてしまうと思われる(動作確認はしてない)のでconfig.timeout_inの期間も同じに設定しておきます。

参考にした記事