laravel 5.4 成功重置密码后返回登录页面

Sar*_*roj 3 laravel laravel-5.4

当用户在 laravel 5.4 中成功重置密码时,我想重定向到登录页面。

目前,成功重置后会重定向到仪表板页面。我环顾四周所有的东西都说要放置
protected $redirectTo = '/home'; 在受保护的 $redirectTo = '/' 中;但它没有给我任何解决方案。

San*_*esh 6

默认情况下,Laravel 在重置密码后对用户进行身份验证。因此不可能重定向到登录页面,因为只有访客用户才能查看登录页面。即使您将 设为$redirectTo/login来宾中间件也会将用户重定向回,/home因为用户已通过身份验证。

如果您需要阻止用户在重置密码时自动登录并将其重定向到登录页面,您需要按照以下步骤操作。

ResetPasswordController在位于 处进行以下更改app/Http/Controllers/Auth

将重定向路径更改为您的登录页面。

protected $redirectTo = '/login';
Run Code Online (Sandbox Code Playgroud)

重写该resetPassword方法以阻止用户登录。将其添加到控制器中。

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

将其添加到顶部

use Illuminate\Support\Str;
Run Code Online (Sandbox Code Playgroud)

Trait中的原始方法ResetsPasswords如下所示。

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

    $this->guard()->login($user);
}
Run Code Online (Sandbox Code Playgroud)

编辑:要在重定向时发送自定义响应,您可以sendResetResponse在控制器中覆盖并添加任何自定义会话/闪存消息。默认情况下,laravel 在成功重置密码时设置自己的响应。

protected function sendResetResponse($response)
{
    return redirect($this->redirectPath())
                        ->with('status', trans($response));
}
Run Code Online (Sandbox Code Playgroud)