---
> ###### 首先說明 JWT 是什么, 它和權限認證之間的關系是什么, 我們如何來優雅的使用 JWT 這一工具以及其背后的深刻原理
## 一、安裝 JWT 的擴展包
> 需要安裝的包, 采用 composer 的方式安裝
https://jwt-auth.readthedocs.io/en/develop/laravel-installation/
composer require tymon/jwt-auth
## 二、配置
> 文檔中說需要配置provider, 5.4 以下, 這里我們是8.5就不用配置了
#### 發布我們的配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

> #### 生成秘鑰到 env 中

> #### 有了門后我們就安裝,安裝好后我們需要讓保安執行守護哪一個門, `auth.php`

> 添加下面這一行代碼, 識別我們的驗證驅動 JWT
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'blog' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
> 注意模型不要配置錯誤 User
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
> 原來我們已經有了 User 表, 這個表是安裝 laravel-permission 后生成的我們就用這個 User模型。實現了 JWT 的接口我們需要重實現兩個方法
class User extends Authenticatable implements JWTSubject
> 實現 JWT 的兩個方法并改造
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return []; // 存放一些自定義的信息到JWT的token
}
### 三、如何使用
> #### 還是原來的的控制器
> 添加一個新角色和用戶
$user = Role::create(['name' => 'root']);
$user = User::query()->create([
'name' => 'white',
'email' => '986247535@qq.com',
'password' => '123456',
]);
> ##### 編寫控制器中的方法來生成我們的 Token, 值得注意的是什么? 在 User 我們需要獲取這個模型而不是獲取一個集合或者數組
$user = User::query()->where('name','white')->first();
$token = Auth::guard('blog')->login($user); //這里會返回一個 Token
> #### 返回的 TOKEN 如下, 三部分如下
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
eyJpc3MiOiJodHRwOlwvXC9sYXJhdmVsLWFuZ3VsYXItYmxvZy50ZXN0XC9ibG9nXC9hdXRoXC9sb2dpbiIsImlhdCI6MTYzMDA1MzI2NiwiZXhwIjoxNjMwMDU2ODY2LCJuYmYiOjE2MzAwNTMyNjYsImp0aSI6InJBN2Z4aFZ5RTh3UE5HZXciLCJzdWIiOjEsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.
yZaa83ggAIcQlIH0y_od0zw27rrg_fqgulMy3QHMfYg"
### 四、JWT 是如何生成的它具有什么樣的特征