2015-10-28 95 views
0

我使用laravel 5.1身份驗證進行登錄。但是Auth::attempt($credentials)總是返回false!laravel 5.1登錄無效

我用下面的路線來創建用戶:

Route::get('newuser', function() { 
    return User::create([ 
    'username' => 'admin', 
    'email' => '[email protected]', 
    'password' => Hash::make('123'), 
    ]); 
}); 

我添加了一個簡單postLogin函數來覆蓋AuthController此功能:

public function postLogin(Request $request) { 
    $credentials = $this->getCredentials($request); 
    if(Auth::attempt($credentials)) { 
     return 'ok'; 
    } 
    return 'nok'; 
} 

getCredentials是與該內容laravel功能:

protected function getCredentials(Request $request) 
{ 
    return $request->only($this->loginUsername(), 'password'); 
} 
+0

您可以編輯問題併發布您使用的$憑證代碼嗎? –

+0

ofcourse,問題更新! –

+1

是否是錯字'Hash:make('123')'我認爲它應該是'Hash :: make('123')' –

回答

0

這可能有多種原因。 我建議你在用戶表中檢查phpMyAdmin中密碼列的長度。

在要存儲密碼的表中將密碼列更改爲數據庫中的最大長度。

另一個我建議你嘗試下面的代碼,如果它工作。

public function postLogin() 
    { 
    // Login credentials 
    $credentials = array(
     'username' => '[email protected]', 
     'password' => '123', 
    ); 
    // Authenticate the user 
    if (Auth::attempt($credentials)) 
{ 
    return 'ok'; 
} 
else{ 
    return "failed"; 
} 

希望這會有所幫助。

  1. 不要忘記更改數據庫中的密碼列長度,將其更改爲最大值。

  2. 更改密碼數據類型與長度LONGTEXT到maximun或1000

末和重要的是,從表中刪除所有記錄,然後重新啓動過程中,由於priviously保存的傳遞被保存另一個長處,因爲currunt散列密碼不符合舊的密碼。

因此,截斷該表並再次嘗試。

+0

我將數據庫中的密碼列長度更改爲255個字符並測試您的代碼,但結果相同! –

+0

將數據類型更改爲LONGTEXT並將長度設置爲1000,只需嘗試一次。可以看到編輯過的anwers,這可能會對您有所幫助。 –

+0

它不是來自密碼,因爲'Hash :: check($ credentials ['password'],$ hashPass)'代碼返回true,其中$ hashPass填充數據庫密碼。 –