我需要對用戶進行一些額外的檢查,我想通過用戶名和密碼獲取用戶。通過用戶名和密碼與Laravel獲取用戶
首先:
有一個內置的函數,通過獲取用戶名和密碼的用戶無需驗證呢?
其次:
如果以上是否定的,那麼我怎麼正確地散列密碼,因爲如果我使用Hash::make($password)
,並且然後與數據庫,它是不一樣的...你通常會使用Hash :: check,但我需要通過用戶名和密碼實際獲取用戶。
我需要對用戶進行一些額外的檢查,我想通過用戶名和密碼獲取用戶。通過用戶名和密碼與Laravel獲取用戶
首先:
有一個內置的函數,通過獲取用戶名和密碼的用戶無需驗證呢?
其次:
如果以上是否定的,那麼我怎麼正確地散列密碼,因爲如果我使用Hash::make($password)
,並且然後與數據庫,它是不一樣的...你通常會使用Hash :: check,但我需要通過用戶名和密碼實際獲取用戶。
第一:
如果你想檢查用戶數據,以驗證是正確的,你可以使用:
if (Auth::validate($credentials))
{
//
}
但是,如果你想從數據庫用戶提供用戶名和密碼,你可以使用:
$user = User::whereName($username)->wherePassword(Hash::make($password))->first();
二
要在數據庫中存儲密碼,您應該使用Hash::make($password)
,因爲您顯示它並且沒有任何問題。使用Auth::validate
應該可以解決問題。
是的,您應該使用內置函數。我建議你閱讀the docs。但這裏有一個很好的例子,這是相當不言自明:
$input = array(
'username' => Input::get('username'),
'password' => Input::get('password'),
);
$remember = (boolean)Input::get('remember'); //'Remember me' checkbox
if (Auth::attempt($input, $remember)) {
return Redirect::intended('dashboard')->with("success", "You're logged in!"); //Redirect the user to the page intended to go to, with the dashboard page as default
}
註冊用戶看起來是這樣的:
$input = array(
'username' => Input::get('username'),
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password')) //Encrypt password
);
$user = User::create($input);
我也建議你閱讀有關input validation。我希望這會有所幫助,祝你好運。
編輯:我沒有閱讀「沒有驗證他們」部分。正如Marcin已經解釋的那樣,您應該使用Auth::validate($input)
。
$ user = Auth :: validate($ credentials);不返回用戶... – Jimmyt1988 2014-10-16 17:02:27
@ Jimmyt1988你對錯誤的帖子作出了迴應;-) – JasonK 2014-10-16 17:03:47
在Laravel 5.2
您可以使用Auth::once($credentials)
驗證憑據,然後Auth::getUser();
來獲取用戶。
$credentials = Request::only('username', 'password');
if(Auth::once($credentials)) {
$user = Auth::getUser();
} else {
// Invalid user credentials
}
是$ credentials數組嗎? – Jimmyt1988 2014-10-16 17:00:18
@ Jimmyt1988是的,你使用它與'試圖'功能相同,但嘗試將登錄用戶,這將不會 – 2014-10-16 17:03:33
@ Jimmyt1988我編輯了我的答案 – 2014-10-16 17:52:29