skofi/laravel-jwt-auth

Laravel的JWT认证,带邮件确认

1.0 2024-01-04 19:23 UTC

This package is auto-updated.

Last update: 2024-09-05 15:41:10 UTC


README

此存储库为Laravel应用程序提供使用JWT(JSON Web Tokens)进行授权和邮件确认的全功能。

安装

要设置JWT认证和邮件确认,请按照以下步骤操作

  1. 运行以下命令安装skofi/laravel-jwt-auth

    composer require skofi/laravel-jwt-auth
  2. 运行以下命令安装JWT认证

    php artisan jwt-auth:install
  3. 发布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许可证。