laranex/laravel-refresh-token

一个帮助您在laravel应用程序中实现刷新令牌机制的软件包

v1.0.0 2023-06-29 06:49 UTC

README

Latest Version on Packagist Total Downloads run-tests

一个帮助您在laravel应用程序中实现刷新令牌机制的软件包

安装

您可以通过composer安装此包

  composer require laranex/laravel-refresh-token

生成加密密钥

  php artisan refresh-token:keys

运行迁移文件

  php artisan migrate

您可以使用以下命令发布配置文件

  php artisan vendor:publish --tag="refresh-token-config"

这是发布配置文件的内容

    return [
    
        /*
        |--------------------------------------------------------------------------
        | Encryption Keys
        |--------------------------------------------------------------------------
        |
        | Refresh Token uses encryption keys while generating secure access tokens for
        | your application. By default, the keys are stored as local files but
        | can be set via environment variables when that is more convenient.
        |
        */
        'private_key' => env('REFRESH_TOKEN_PRIVATE_KEY'),
    
        'public_key' => env('REFRESH_TOKEN_PUBLIC_KEY'),
    
        /*
        |--------------------------------------------------------------------------
        | Refresh Token Model
        |--------------------------------------------------------------------------
        |
        | Refresh Token Model to manage refresh tokens
        |
        */
        'model' => RefreshToken::class,
    
        /*
        |--------------------------------------------------------------------------
        | Refresh Token Table
        |--------------------------------------------------------------------------
        |
        | Refresh Token Model to manage refresh tokens
        |
        */
        'table' => 'laravel_refresh_tokens',
    ];

覆盖默认值(可选)

Laranex\RefreshToken\RefreshToken类下有以下静态方法可用于覆盖默认值。通过在服务提供程序中调用它们并传递您想要的值,将覆盖默认值。

  • useRefreshTokenModel(string $refreshTokenModel): void
  • loadKeysFrom(string $path): void
  • refreshTokensExpireIn(DateTimeInterface $date = null): DateInterval|static

使用方法

  • 在您的刷新令牌模型中使用该特质
    class User extends Authenticatable{
        use HasRefreshTokens;
    
    }
  • 创建刷新令牌

    $user = Auth::user()->createRefreshToken();
  • 验证刷新令牌

    • 如果令牌有效,将返回一个令牌实例,否则返回null
    $verifiedToken = Laranex\RefreshToken\RefreshToken::tokenable($request->get('refresh_token'));
    if ($verifiedToken) {
    // Implement your access token logic here
    
    } else {
    // handle invalid refresh token
    }
  • 处理已验证的刷新令牌

        $verifiedToken = Laranex\RefreshToken\RefreshToken::tokenable($request->get('refresh_token'));
    • 您可以通过调用instance属性来访问令牌实例,该属性将返回您在模型中使用的RefreshToken特质实例

          $tokenInstance = $verifiedToken->instance;
    • 吊销刷新令牌(令牌将不再有效)

          $verifiedToken->revoke();
    • 吊销与当前刷新令牌实例相关的所有刷新令牌

          $verifiedToken->revokeAll();

修剪命令

  • 您可以使用修剪命令来删除所有过期的刷新令牌
        php artisan refresh-token:prune
  • 或者,您可以将此放入计划程序中定期运行
        $schedule->command('refresh-token:prune')->daily();

更新日志

有关最近更改的更多信息,请参阅更新日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

有关如何报告安全漏洞,请参阅我们的安全策略

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件