aikrof / jwt-auth
为 Laravel 简单的 JSON Web Token 认证
Requires
- php: >=7.1.8
- illuminate/auth: ^5.8
- illuminate/console: ^5.8
- illuminate/contracts: ^5.8
- illuminate/database: ^5.8
- illuminate/http: ^5.8
- illuminate/support: ^5.8
- nesbot/carbon: ^2.2
This package is auto-updated.
Last update: 2024-09-27 22:15:34 UTC
README
1. 安装
composer require aikrof/jwt-auth
2. 添加服务提供者
将服务提供者添加到 config/app.php
配置文件中的 providers
数组
'providers' => [ ... Aikrof\JwtAuth\Providers\JwtServiceProvider::class, ... ],
3. 发布配置文件
php artisan vendor:publish --provider="Aikrof\JwtAuth\Providers\JwtServiceProvider"
此命令将创建带有基本配置的 config/jwt.php
文件。
4. 迁移表
创建存储无效令牌的表。
php artisan migrate
5. 生成密钥
php artisan create:secret
此命令将在您的 .env
文件中创建 JWT_SECRET_KEY 和 JWT_REFRESH_KEY。
6. 配置认证保护器
在 config/auth.php
文件内部
'defaults' => [ 'guard' => 'api', 'passwords' => 'users', ], ... 'guards' => [ ... 'api' => [ 'driver' => 'jwt', 'provider' => 'users', ], ],
将 api
保护器设置为默认保护器,并将 jwt
驱动器添加到 api
保护器
7. 更新您的用户模型
将 trait
添加到您的用户模型
1) 实现 Aikrof\JwtAuth\JwtCreator
2) 然后添加 trait use JwtCreator
namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Aikrof\JwtAuth\JwtCreator; class User extends Authenticatable { use JwtCreator, Notifiable; .... }
8. 使用方法
1) 设置令牌存活时间
1. 设置令牌存活时间
默认令牌存活时间(ttl
)为 1 周,您可以在 config/jwt.php
文件中或创建新令牌时更改 ttl
Auth::user()->setTtl(2);
示例:将令牌存活时间设置为 2 分钟。setTtl()
- 接受以分钟为单位的参数。
1. 设置刷新令牌存活时间
默认刷新令牌存活时间为 token ttl * 2
,您可以在 config/jwt.php
文件中或创建新令牌时更改 refreshTtl
Auth::user()->setRefreshTtl(4);
示例:将令牌存活时间设置为 4 分钟。setRefreshTtl()
- 接受以分钟为单位的参数。
2) 创建 JWT 令牌和刷新令牌
Auth::token();
或者使用 setTtl() 或 setRefreshTtl()
Auth::user()->setTtl(2)->setRefreshTtl()->token();
将返回包含以下字段的数组
[ 'token' => '...', 'refresh' => '...' ]
3) 获取令牌存活时间
1. 获取以分钟为单位的令牌存活时间
Auth::user()->getTtl();
获取以 UNIX 时间戳为单位的令牌存活时间
Auth::user()->getExpTtl();
2. 获取以分钟为单位的刷新令牌存活时间
Auth::user()->getRefreshTtl();
获取以 UNIX 时间戳为单位的刷新令牌存活时间
Auth::user()->getRefreshExpTtl();
4) 用户登出
登出用户 - 这将使当前令牌无效并取消已认证用户的设置。
Auth::logout();
刷新 JWT 令牌
刷新令牌,这将使当前令牌无效并返回新的令牌和刷新令牌。
Auth::refresh();
如果 JWT 令牌无效或包含无效数据,则将返回 null
。