こんにちは。 Syuu( @syuu_n18)です。
私が個人で開発しているサービスで Ruby on Rails と devise を使用しており、アクセスをするたびにログインセッションを延長したいと思ったため方法をまとめてみました。
devise の rememberable ではログインした日時を基準に cookie へ expire が設定されます。
そのため devise の設定を一部変更するだけで 「アクセスするたびに指定した期間セッションを延長する」 といったことができるようになります。
具体的には config/initializers/devise.rb
に存在する extend_remember_period
を true
に変更します。
デフォルトでは 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_period
が true
に設定されている場合は以下のような動作となります。
9/1にログイン → 9/8までセッションが維持 → 9/3にアクセス → 9/10までセッションが延長
これによってアクセスするたびにログインセッションを延長し、セッション維持時間の範囲内であれば再度ログインが求められることがなくなります。
Rubocop の CollectionLiteralInLoop の対処法
Rails ルーティングの member と collection の違いを解説
Rails で respond_to が NoMethodError になる場合の対処法
RuboCop の cyclomatic complexity too high への対処法
【人気のフレームワーク】Ruby on Rails とはなにか?