## Auth类验证身份
可以通过Auth::attempt()方法来对用户进行身份验证,此方法接收两个参数.第一个参数是一个数组,该参数提供的值将用于寻找数据库中的用户数据.使用该方法的使用不需要对密码进行加密,laravel会自动对密码记性bcrypt()加密并与数据库中的密码进行对比.具体步骤如下:
1. 使用 email 字段的值在数据库中查找.
2. 如果用户被找到:
1). 先将传参的 password 值进行哈希加密,然后与数据库中 password 字段中已加密的密码进行匹配.
2). 如果匹配后两个值完全一致,会创建一个『会话』给通过认证的用户。会话在创建的同时,也会种下一个名为 laravel_session 的 HTTP Cookie,以此 Cookie 来记录用户登录状态,最终返回 true.
3). 如果匹配后两个值不一致,则返回 false.
3.如果用户未找到,则返回 false.
~~~
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// 该用户存在于数据库,且邮箱和密码相符合
}
~~~
具体流程如下 , Auth::attempt()可以接收第二个参数,为布尔值,起到"记住我"的功能.
~~~
public function store(Request $request)
{
$credentials = $this->validate($request, [
'email' => 'required|email|max:255',
'password' => 'required'
]);
if (Auth::attempt($credentials,$request->has('remember'))) {
// 登录成功后的相关操作
} else {
// 登录失败后的相关操作
}
return;
}
~~~
## 获取身份验证成功的用户信息
获取验证成功的用户信息
~~~
Auth::user();
~~~
获取验证成功的用户ID
~~~
Auth::id();
~~~
判断当前用户是否已登录(通过身份验证),返回true和false.
~~~
Auth::check();
~~~
让已通过注册的用户自动登录
~~~
Auth::login($user); //$user是该用户的实例,此方法放在注册逻辑里.
~~~
退出,该方法会自动糖用户退出.
~~~
Auth::logout()
~~~