2015-09-02 91 views
0

我有這樣的代碼:爲什麼驗證::嘗試總是返回false在Laravel 5.1

public function postLogin(Request $request) { 


    if(Auth::attempt(['username' => $request->username, 'password' => $request->password])) 
    { 
     return redirect()->intended('users/dashboards'); 
    }else{ 
     return redirect('/')->withInput()->with('message', 'Login Failed'); 
    } 
} 

這裏是我的控制器:

Route::get('/', ['as' => 'home', 'uses' => '[email protected]']); 
    Route::post('post-login', ['as' => 'post_login', 'uses' => '[email protected]']); 

    Route::group(['middleware' => 'auth', 'prefix' => 'user'], function(){ 
    Route::get('dashboards', ['as' => 'dashboards', 'uses' => '[email protected]']); 
    }); 

我不知道爲什麼它總是返回false。我正在測試用戶是否通過身份驗證。如果我使用Auth::check()它返回false但如果我使用Auth::guests它返回true。我對中間件太困惑了。有人能幫助我嗎?

+0

也許你提供不正確的憑據所有的時間更換return語句。您是否在驗證失敗時檢查用戶名和密碼的值?另外,什麼讓你困惑中間件?它的工作方式或爲什麼存在? – Mjh

+0

沒有即時通訊提供與我的數據庫中的良好憑據,但仍然沒有運氣。而且我的密碼不是'哈希' – aldrin27

+2

我們沒有足夠的信息來幫助你。因此,您在數據庫中擁有非哈希密碼,您提供了「正確」憑據(根據您的情況),但是 - 您意識到Laravel的'Auth'使用哈希密碼? – Mjh

回答

0

framework/src/Illuminate/Auth/Guard.php

protected function hasValidCredentials($user, $credentials) { 
    return ! is_null($user) && $this->provider->validateCredentials($user, $credentials); 
} 

hasValidCredentials功能實際上發生了錯誤所以只是

return ! is_null($user) || 
$this->provider->validateCredentials($user, $credentials); 
相關問題