[英]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.