skofi / laravel-jwt-auth
Laravel的JWT认证,带邮件确认
1.0
2024-01-04 19:23 UTC
Requires
- php: ^8.1
- illuminate/console: ^10.0
- illuminate/filesystem: ^10.0
- illuminate/support: ^10.0
- tymon/jwt-auth: ^2.0
README
此存储库为Laravel应用程序提供使用JWT(JSON Web Tokens)进行授权和邮件确认的全功能。
安装
要设置JWT认证和邮件确认,请按照以下步骤操作
-
运行以下命令安装
skofi/laravel-jwt-auth
包composer require skofi/laravel-jwt-auth
-
运行以下命令安装JWT认证
php artisan jwt-auth:install
-
发布JWT认证的供应商
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
JWT中间件
将以下中间件添加到您的Kernel.php
中,以进行JWT认证
protected $middlewareAliases = [ // ... 'auth.jwt' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class, ];
用户模型实现
在用户模型中按照以下方式实现JWTSubject接口
use Illuminate\Foundation\Auth\User as Authenticatable; use Tymon\JWTAuth\Contracts\JWTSubject; class User extends Authenticatable implements JWTSubject { // ... (other user model code) /** * Get the identifier that will be stored in the subject claim of the JWT. * * @return mixed */ public function getJWTIdentifier() { return $this->getKey(); } /** * Return a key value array, containing any custom claims to be added to the JWT. * * @return array */ public function getJWTCustomClaims() { return []; } }
密码重置路由配置
在AuthServiceProvider的boot()方法中,添加以下代码以配置密码重置路由,以便重定向到前端URL
use Illuminate\Auth\Notifications\ResetPassword; // ... (other imports and code) class AuthServiceProvider extends ServiceProvider { /** * Register any authentication / authorization services. */ public function boot(): void { ResetPassword::createUrlUsing(function ($user, string $token) { return config('app.frontend_url') . '/reset-password?token=' . $token . '&email=' . $user->email; }); } // ... }
JWT的有效期
您可以在.env
文件中定义变量以自定义令牌的有效期(TTL)设置
JWT_TTL=1440
JWT_REMEMBER_TTL=525600
JWT_TTL
表示标准令牌生命周期,单位为分钟。JWT_REMEMBER_TTL
表示选择“记住我”选项时令牌的生命周期,也以分钟为单位。
生成密钥
此密钥用作您令牌的签名,具体过程取决于您选择的算法。
php artisan jwt:secret
用法
- 设置完成后,您可以使用JWT认证进行用户授权。
- 将基于在您的
.env
中配置的FRONTEND_URL=
生成密码重置链接。
贡献
请随意通过打开问题或提交拉取请求来贡献。
许可证
本项目采用MIT许可证。