2021.09.29 に更新2 min read

devise でアクセスに応じてログインセッションを延長する方法

サムネイル画像

こんにちは。 Syuu( @syuu_n18)です。

私が個人で開発しているサービスで Ruby on Rails と devise を使用しており、アクセスをするたびにログインセッションを延長したいと思ったため方法をまとめてみました。

結論

devise の rememberable ではログインした日時を基準に cookie へ expire が設定されます。

そのため devise の設定を一部変更するだけで 「アクセスするたびに指定した期間セッションを延長する」 といったことができるようになります。

具体的には config/initializers/devise.rb に存在する extend_remember_periodtrue に変更します。
デフォルトでは false に設定されています。

  # If true, extends the user's remember period when remembered via cookie.
  config.extend_remember_period = true

また、ログインのセッション維持時間を設定したい場合は同様の場所にある remember_for の設定を変更することで実現可能です。

  # The time the user will be remembered without asking for credentials again.
  config.remember_for = 1.week

例えば remember_for が1週間に設定されており、 extend_remember_periodtrue に設定されている場合は以下のような動作となります。

9/1にログイン → 9/8までセッションが維持 → 9/3にアクセス → 9/10までセッションが延長

これによってアクセスするたびにログインセッションを延長し、セッション維持時間の範囲内であれば再度ログインが求められることがなくなります。


SHARE