livijn / multiple-tokens-auth
为auth:api中间件添加使用多个令牌的能力。
Requires
- php: >=7.2.0
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.0
README
该版本在 Laravel Sanctum 之前发布。我建议使用Laravel Sanctum代替。
multiple-tokens-auth
为auth:api中间件添加使用多个令牌的能力。如果您想允许用户同时登录到您的SPA、iOS应用和Android应用,这将非常有用。默认的令牌驱动程序只允许每个用户使用一个令牌。
使用每个用户的多个令牌可能会导致表变得很大。因此,我们对令牌设置了过期日期。如果可能,您应该按照第6步描述的方式将PurgeExpiredApiTokensJob添加到您的计划中。如果不这样做,您应该以某种方式处理过期的令牌。
您可以查看示例应用multiple-tokens-auth-testapp。
安装
-
使用Composer安装此包
composer require livijn/multiple-tokens-auth
-
发布
multiple-tokens-auth.php配置和迁移php artisan vendor:publish --provider="Livijn\MultipleTokensAuth\MultipleTokensAuthServiceProvider"默认情况下,迁移包含具有
unsignedBigInteger字段的user_id。如果您在User模型中使用uuid,则需要手动更改。 -
运行迁移
php artisan migrate
-
在
config/auth.php文件中将api保护驱动程序设置为multiple-tokens'guards' => [ // ... 'api' => [ 'driver' => 'multiple-tokens', // <- Change this FROM token TO multiple-tokens // ... ], ],
-
将
HasApiTokens特质添加到您的User模型中。class User extends Authenticatable { use Notifiable, HasApiTokens; // ... }
-
(可选) 在
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)。请参阅许可证文件获取更多信息。