我需要对用户进行一些额外的检查,我想通过用户名和密码获取用户。通过用户名和密码与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