2017-05-29 16 views
1

ユーザーがlaravel 5.4でパスワードを正常にリセットするたびにログインページにリダイレクトします。laravelでパスワードを正常にリセットした後にログインページに戻る5.4

現在、正常にリセットされた後、ダッシュボードページにリダイレクトされます。 私はすべてのものを置くと言っているすべてのものを見渡した。
保護$ redirectTo = '/ home';保護された$ redirectTo = '/'; しかし、私には解決策はありません。

+0

'protected $ redirectTo = '/ login'' –

+0

ログインページの代わりにホームページに移動します。 –

+0

ログイン後にパスワードをリセットしようとすると、ホームページに移動します –

答えて

1

デフォルトでは、Laravelはパスワードをリセットした後にユーザーを認証します。したがって、ゲストユーザだけがログインページを表示できるので、ログインページにリダイレクトすることは不可能です。 $redirectTo/loginに設定しても、ユーザーが認証されているため、ゲストミドルウェアはユーザーを/homeにリダイレクトします。

パスワードをリセットしてログインページにリダイレクトする際にユーザーが自動的にログインしないようにする必要がある場合は、次の手順を実行する必要があります。

ResetPasswordControllerにある以下の変更をapp/Http/Controllers/Authに置いてください。

ログインページへのリダイレクトパスを変更します。

protected $redirectTo = '/login'; 
は、ログインしているユーザを防ぐために resetPasswordメソッドをオーバーライドコントローラにこれを追加

protected function resetPassword($user, $password) 
{ 
    $user->forceFill([ 
     'password' => bcrypt($password), 
     'remember_token' => Str::random(60), 
    ])->save(); 
} 

ResetsPasswords特色元のメソッドは次のようになり、トップ

use Illuminate\Support\Str; 

にこれを追加します。

protected function resetPassword($user, $password) 
{ 
    $user->forceFill([ 
     'password' => bcrypt($password), 
     'remember_token' => Str::random(60), 
    ])->save(); 

    $this->guard()->login($user); 
} 

編集:あなたのコントローラでsendResetResponseをオーバーライドして、任意のカスタムセッション/フラッシュメッセージを追加することができますリダイレクトのカスタム応答を送信します。デフォルトでは、laravelはパスワードリセットが成功したときにそれ自身の応答を設定します。

protected function sendResetResponse($response) 
{ 
    return redirect($this->redirectPath()) 
         ->with('status', trans($response)); 
} 
+0

ありがとう@sandeesh完璧に動作しました。加えて、我々は Authを使用する必要があることを言及する必要があります。また、 イルミネーション\ Support \ Strを使用してください。コードの上に –

+0

これ以上質問がありましたら、ログインページに戻った後にユーザーにメッセージを表示したいと思います。どのように私はこれを達成することができます。 –

+0

@Saroj答えを編集し、カスタムメッセージを追加する方法について 'use'と情報を追加しました。 – Sandeesh

0

パスワードが正常にリセットされたとき。セッション/クッキーをログオンしたユーザーとして自動的に設定する必要があります。セッション/ Cookieの設定を解除すると、ミドルウェアはログインが行われていないことを検出し、パスワードを正常にリセットした後に/ loginページにリダイレクトする必要があります。

関連する問題