为什么在Laravel 5.1中Auth::attempt总是返回false ?


Why is Auth::attempt always returns false in 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' => 'HomeController@Home']);
  Route::post('post-login', ['as' => 'post_login', 'uses' => 'HomeController@postLogin']);
  Route::group(['middleware' => 'auth', 'prefix' => 'user'], function(){
    Route::get('dashboards', ['as' => 'dashboards', 'uses' => 'HomeController@getDashBoards']);
  });

我不知道为什么它总是返回false。我正在测试用户是否经过身份验证。如果我用Auth::check(),它返回false,但如果我用Auth::guests,它返回true。我对中间件太困惑了。有人能帮帮我吗?

实际上错误发生在framework/src/Illuminate/Auth/Guard.php的hasValidCredentials函数

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

替换return语句
return ! is_null($user) ||
$this->provider->validateCredentials($user, $credentials);