2017-05-29 78 views
1

我想在用戶在laravel 5.4中成功重置密碼時重定向到登錄頁面。在laravel中成功重置密碼後返回登錄頁面5.4

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

+0

'protected $ redirectTo ='/ login'' –

+0

無法使用,它將我帶到主頁而不是登錄頁面。 –

+0

如果您在登錄後嘗試重置密碼,則會將您帶到主頁 –

回答

1

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

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

在位於app/Http/Controllers/AuthResetPasswordController中執行以下更改。

將重定向路徑更改爲登錄頁面。

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

謝謝@sandeesh它的工作完美。另外你應該提到我們需要添加 使用Auth;並且 使用Illuminate \ Support \ Str;在代碼的頂部。 –

+0

對此,還有1個問題,我想在回到登錄頁面後向用戶顯示一些消息。我怎樣才能實現這一點。 –

+0

@Saroj編輯答案並添加了「use」和關於如何添加自定義消息的信息。 – Sandeesh

0

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

相關問題