## 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()
~~~