1. ホーム
  2. ruby-on-rails

パスワード変更後の自動ログアウトの工夫

2023-08-12 05:23:55

質問

Deviseで、ユーザーのパスワードを変更し、それがデータベースで更新された後、サイトがすぐにユーザーをログアウトさせます。このような動作はしたくありません。どうすればよいのでしょうか。

どのように解決するのですか?

私も同じ問題を抱えていましたが、以下のコードで解決できそうです。

passwordsコントローラはシングルトンルートに設定されているとします。 また、認証されるモデルはAccountであるとします。 これを使うと、以下のようになります。

def update
  if current_account.update_with_password(params[:account])
    sign_in(current_account, :bypass => true)
    flash[:notice] = 'Password updated.'
    redirect_to account_path
  else
    render :action => :show
  end
end

重要な要素は、アカウントの再サインインを求める sign_in メソッド呼び出しですが、warden コールバックをバイパスしてアカウントをセッションに保存します。