Quantcast
Channel: vdeep
Viewing all articles
Browse latest Browse all 155

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

$
0
0


こんにちは、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でログイン後のセッション時間を延長させる方法について解説しました。

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

参考になれば幸いです。


Viewing all articles
Browse latest Browse all 155

Trending Articles