Devise (v3.2.2) で会員登録した後、ブラウザを閉じるとログアウト状態になってしまいます。
これを回避し、会員登録の直後から、常にログインしたままとする方法を考えてみました。
app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController def create super { |resource| resource.remember_me = true } end end
Devise::RegistrationsController#create は、ブロックを渡すと処理してくれるのでこのようにします。
パスワードリセット後もログイン状態を維持するには、app/controllers/users/passwords_controller.rb に同様の処理を書きます。
class Users::PasswordsController < Devise::PasswordsController def update super { |resource| resource.remember_me = true } end end
あとは config/routes.rb で、これらのコントローラを参照するようにすれば OK です。
devise_for(:users, controllers: { registrations: 'users/registrations', passwords: 'users/passwords' })
ログイン状態の有効期限を延ばす設定
このようにして毎日アクセスしていても、ある日突然ログアウトしていることがあります。
これを防ぐには、config/initializers/devise.rb で以下の設定をします。
config.extend_remember_period = true
これで毎日アクセスするような場合は、勝手にログアウトされることがなくなります。