我有这样的代码:
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);