0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】ブラウザを閉じてもログインセッションを維持させる

Posted at

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

サーバー(コンテナ)を再起動

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?