livijn/multiple-tokens-auth

为auth:api中间件添加使用多个令牌的能力。

0.6.2 2020-01-21 12:56 UTC

This package is auto-updated.

Last update: 2024-09-18 14:59:57 UTC


README

该版本在 Laravel Sanctum 之前发布。我建议使用Laravel Sanctum代替。

multiple-tokens-auth

Latest Version on Packagist Total Downloads

为auth:api中间件添加使用多个令牌的能力。如果您想允许用户同时登录到您的SPA、iOS应用和Android应用,这将非常有用。默认的令牌驱动程序只允许每个用户使用一个令牌。

使用每个用户的多个令牌可能会导致表变得很大。因此,我们对令牌设置了过期日期。如果可能,您应该按照第6步描述的方式将PurgeExpiredApiTokensJob添加到您的计划中。如果不这样做,您应该以某种方式处理过期的令牌。

您可以查看示例应用multiple-tokens-auth-testapp

安装

  1. 使用Composer安装此包

    composer require livijn/multiple-tokens-auth
  2. 发布multiple-tokens-auth.php配置和迁移

    php artisan vendor:publish --provider="Livijn\MultipleTokensAuth\MultipleTokensAuthServiceProvider"

    默认情况下,迁移包含具有unsignedBigInteger字段的user_id。如果您在User模型中使用uuid,则需要手动更改。

  3. 运行迁移

    php artisan migrate
  4. config/auth.php文件中将api保护驱动程序设置为multiple-tokens

    'guards' => [
        // ...
    
        'api' => [
            'driver'   => 'multiple-tokens', // <- Change this FROM token TO multiple-tokens
            
            // ...
        ],
    ],
  5. HasApiTokens特质添加到您的User模型中。

    class User extends Authenticatable
    {
        use Notifiable, HasApiTokens;
    
        // ...
    } 
  6. (可选)Console/Kernel.php中将PurgeExpiredApiTokensJob添加到您的计划中。

    protected function schedule(Schedule $schedule)
    {
        $schedule->job(PurgeExpiredApiTokensJob::class)->dailyAt('01:00');
    }

用法

您可以使用与使用默认Laravel基于令牌的API身份验证相同的方式使用此包。此包还支持哈希

登录

当用户登录时,您应该通过使用generateApiToken方法创建一个新的API令牌。

$user = User::first();
$token = $user->generateApiToken(); // returns ltBKMC8zwnshLcrVh9W07IGuifysDqkyWRt6Z5szYJOrh1mnNPValkAtETj0vtPJdsfDQa4E3Yx0N3QU

登出

当您想要登出用户时,您可以在Auth外观上使用logout方法。这将删除用于当前请求的令牌。

auth()->logout();
// or
Auth::logout();

清除令牌

要删除与用户关联的所有令牌,请使用purgeApiTokens方法。

$user = User::first();
$user->purgeApiTokens();

测试

使用以下命令运行测试

vendor/bin/phpunit

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。