簡體   English   中英

laravel 5.4 重設密碼成功后返回登錄頁面

[英]Take back to login page after successfully reset his/her password in laravel 5.4

每當用戶在 laravel 5.4 中成功重置密碼時,我想重定向到登錄頁面。

目前它在成功重置后重定向到儀表板頁面。 我環顧四周所有的東西都說要放置
受保護的 $redirectTo = '/home'; 在受保護的 $redirectTo = '/'; 但它沒有給我任何解決方案。

默認情況下,Laravel在重置密碼后對用戶進行身份驗證。 因此,不可能重定向到登錄頁面,因為只有訪客用戶才能查看登錄頁面。 即使將$redirectTo設置為/login ,來賓中間件也會將用戶重定向回/home因為該用戶已通過身份驗證。

如果需要防止用戶使用重置密碼自動登錄並將其重定向到登錄頁面,則需要執行以下步驟。

在位於app/Http/Controllers/Auth ResetPasswordController進行以下更改。

將重定向路徑更改為您的登錄頁面。

protected $redirectTo = '/login';

覆蓋resetPassword方法以防止用戶登錄。將其添加到控制器。

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

將此添加到頂部

use Illuminate\Support\Str;

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

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));
}

成功重置密碼后。 它應該自動將會話/ cookie設置為登錄用戶。 嘗試取消設置會話/ cookie,中間件將檢測到沒有登錄發生,並且在成功重置密碼后,您應該重定向到/ login頁面。

$user->forceFill(...)->save();

$user->fresh();

Auth::guard('web')->login($user, $user->remember_token == NULL); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM