2017-07-26 37 views
0

我使用php artisan make:auth在我的Laravel項目中創建基本身份驗證系統。Laravel Auth有條件重定向

主頁上,我創建引導模式與登錄表單,當我輸入正確的細節,我得到登錄並重定向回主頁的正常工作。

但是,如果我輸錯的詳細信息頁面重新加載,我沒有看到什麼是錯的,因爲很明顯的錯誤消息是模態窗口,這是隱藏,因爲頁面只是realoaded。我必須再次打開模式才能看到錯誤。

所以我想在錯誤的情況下修改我的LoginController(或其他)(表單驗證失敗)我重定向到/登錄 URL這裏是基本的登錄表單(無模式),以正確地看到錯誤。

+0

你可以只火一個jQuery事件來打開模式,如果你通過這種方式可以避開額外的登錄頁面 –

+0

謝謝你得到視圖頁面上的任何錯誤,但是這是我想避免的解決方案。 – Nebster

回答

1

LoginController可以覆蓋的AuthenticatesUsers默認的方法。例如,你可以覆蓋它處理錯誤時的用戶名/電子郵件和密碼不匹配sendFailedLoginResponse()

/** 
* Get the failed login response instance. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\RedirectResponse 
*/ 
protected function sendFailedLoginResponse(Request $request) 
{ 
    $errors = [$this->username() => trans('auth.failed')]; 

    if ($request->expectsJson()) { 
     return response()->json($errors, 422); 
    } 

    return redirect()->to('/login') 
     ->withInput($request->only($this->username(), 'remember')) 
     ->withErrors($errors); 
} 

所以上面的代碼必須在app/Http/Auth/LoginController。代碼與默認代碼相同,但將用戶重定向到/login

然而這並不表單驗證錯誤工作。因此,您需要覆蓋validateLogin()方法。

0

在這種情況下,我會建議你使用AJAX調用Laravel的AUTH路線。如果登錄成功,則使用Javascript重定向到家庭或在相同的登錄彈出窗口中顯示驗證錯誤。

這是在這種情況下最好的和推薦的方法。

在互聯網上有很多帖子可用。只需在Laravel中搜索AJAX登錄。