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
これで毎日アクセスするような場合は、勝手にログアウトされることがなくなります。