vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです

【Rails】Deviseでログイン後のセッション時間を延長させる方法

   

おしらせvdeep管理人が「匿名でバーチャルチョコを送り合うサービス」をつくりました!ぜひ使ってみてね

LINEで送る
Pocket


こんにちは、okutani(@okutani_t)です。本記事では「Deviseでログインしたあとのセッション時間を延長させる」方法について解説しています。

Deviseについて知りたい方は以下のGitHubページをご確認ください。

LINKplataformatec/devise: Flexible authentication solution for Rails with Warden.

僕が運営する「LINKブロガー専用のコミュニティサイト『bcafe』」で、気がついたら毎回ログイン状態が切れている現象を見つけたので対応してみました。

対応手順は以下のとおりです。

  • Userモデルに:timeoutableを追加
  • Deviseのセッション有効期限を設定
  • Railsのセッション有効期限を設定

それでは、順を追って解説していきます。

参考Rails の session の有効期限を無期限にする – 9mのパソコン日記

スポンサーリンク

Userモデルに:timeoutableを追加

「app/models/user.rb」の該当箇所に「:timeoutable」を追記。

class User < ApplicationRecord
  devise ...省略..., :timeoutable
end

これで、Deviseでセッション時間を設定することができます。

Deviseのセッション有効期限を設定

「config/initializers/devise.rb」に以下を追記。

config.timeout_in = 1.month

1ヶ月はログイン状態を保持するように設定しました。

Railsのセッション有効期限を設定

「config/initializers/session_store.rb」を以下のように編集。

Rails.application.config.session_store :cookie_store, key: '_hoge_session', expire_after: 1.month

「_hoge_session」の部分はプロジェクトの設定に合わせてください。

これで、1ヶ月はログインセッションが切れず、1ヶ月以内にアクセスすればさらに1ヶ月セッション時間が延長されます。

ちなみに、「config/initializers/*」以下を編集したので、サーバーの再起動を忘れずに。

確認

以下の手順で設定を確認できます。

$ rails c
[1] pry(main)> User.timeout_in
=> 1 month

あとは1ヶ月間ログイン状態が保たれているのを確認すればOKですね。

Deviseのデフォルトのセッション時間は30分なので、それ以上になっていることが確認できればひとまず大丈夫ですね。

まとめ

本記事では、Deviseでログイン後のセッション時間を延長させる方法について解説しました。

気がついたらログイン状態が切れるサービスだとユーザーが離れて行ってしまう可能性があるので、忘れずに対応しておくと良いですね。

参考になれば幸いです。

LINEで送る
Pocket

おしらせvdeep管理人が「匿名でバーチャルチョコを送り合うサービス」をつくりました!ぜひ使ってみてね

okutani (@okutani_t) のヒトコト
自分でサービスを回すようになっていろいろと知識が付いてきました。bcafe、ぜひ使ってみてください。

 - Ruby on Rails

スポンサーリンク

PC用AdSense

PC用AdSense

  こちらもどうぞ

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。