2016-11-23 43 views
0

我有laravel 5.2項目,需要添加認證,但我需要將它連接到我的表,即有用戶名和密碼,也將默認電子郵件/密碼更改爲用戶名/密碼。在我的表中密碼也不會被加密。Laravel用戶認證使用現有的數據庫表

我已經將電子郵件字段中的login.blade.php文件更改爲用戶名。

而且改變user.php的模型:

protected $table = 'LoginTable'; 

也改變AuthController.php。補充一點:

protected $username = 'username'; 

和更改驗證和創建方法:

return Validator::make($data, [ 
     'username' => 'required|max:255', 
     'password' => 'required|min:6|confirmed', 
    ]); 
return User::create([ 
     'username' => $data['username'], 
     'password' => bcrypt($data['password']), 
    ]); 

,但我不能login.It的說,「這些證書不符合我們的記錄。」。 如何檢查問題是什麼?任何人都可以幫我解決這個問題嗎?

UPDATE

我必須改變密碼散列密碼,但仍然無法做出權威性work.It仍然說: 這些憑證不符合我們的記錄。

我想提的是,在數據庫中我只有用戶名和密碼,並沒有名稱和電子郵件。

+0

您是否瀏覽過文檔?這裏是你如何手動'驗證'用戶。 [docs](https://laravel.com/docs/5.2/authentication#authenticating-users) –

+0

手動驗證可能不是最好的主意。這樣做會損失很多額外的好東西。 –

回答

1

如果您嘗試使用未加密的密碼對現有用戶進行身份驗證,則無法正常工作。

Laravel auth需要加密所有密碼才能通過驗證。因此,首先您需要更新數據庫並使用在config/app.php或.env文件中定義的相同加密密鑰來加密所有密碼。

此外,作爲一個經驗法則,您永遠不應該在數據庫中保留明文密碼。

+0

感謝您的迴應。其他更改是否正確?只需要加密密碼?還有一個人想到,在app.php中,我發現'cipher'=>'AES-256-CBC',而在env.file中我找到了APP_KEY = base64:y6raQpepxEWDZVsX6gwhRuRvOxPoKaj1SJUvzzPV/U0 =。哪一個是我需要的? –

+0

是的,所有其他更改都是正確的。 config/app.php中的設置是'cipher'上的一個,名爲'key',默認從.env文件讀取設置APP_KEY。 –

+0

你只需要'加密()'所有的密碼,這將使用你的APP_KEY。 – Hammerbot