2015-09-02 95 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); 
相关问题