Rails のデフォルトではログインセッションが Cookie で行われるため、ブラウザを閉じるとセッションが終了してしまう。Active Record
セッションストアを利用してデータベースでセッションを管理することで、ブラウザを閉じてもセッション維持することができるようになる。
環境
Ruby 3.1
Rails7
MySQL 8.0
devise(認証ライブラリ)
Gemfile更新・インストール
Gemfile
gem 'activerecord-session_store'
gem 'activerecord-session_store'
セッションストアの変更
config\initializers\session_store.rb 作成
key: 他者に推測されないような文字列
session_store.rb
Rails.application.config.session_store :active_record_store, key: 'app_name_sessionxxx', expire_after: 1.week
上記の場合、セッションは最後にアクセスされた時点から1週間有効となる。
例)1/1にID/パスワードでログインしたあと、1/5に保存されたセッションを使用して再度アクセスした場合、セッションの有効期限は更新されます。
つまり、最後のアクセス時刻が1/5に更新され、この時点から1週間後である1/12が有効期限となる。切れたあとは再度ログインが必要になります。
マイグレーションファイルの作成と実行
$ rails generate active_record:session_migration
$ rails db:migrate