p1613m/ laravel-tokens
Laravel Auth的多令牌支持。
Requires
- php: ^7.0.0
- illuminate/auth: ~7.7
- illuminate/contracts: ~7.7
- illuminate/http: ~7.7
- illuminate/queue: ~7.7
- illuminate/support: ~7.7
This package is auto-updated.
Last update: 2024-09-09 20:10:02 UTC
README
简介
此包为您的应用程序用户提供多个令牌提供了一个简单解决方案。此解决方案类似于Laravel的TokenGuard类。
此包适用于Laravel 5.5及以上版本。
安装
您可以通过composer使用以下命令安装此包
composer require mayoz/laravel-tokens
服务提供程序将自动注册到Laravel 5.5及以上版本。如果您想的话,可以将服务提供程序添加到config/app.php文件中
'providers' => [ // ... Mayoz\Token\TokenServiceProvider::class, ];
如果您要修改默认迁移,可以使用以下命令发布migration文件
php artisan vendor:publish --provider="Mayoz\Token\TokenServiceProvider" --tag="laravel-tokens-migrations"
然后,您可以通过运行迁移来创建tokens表
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Mayoz\Token\TokenServiceProvider" --tag="laravel-tokens-config"
如果需要,您可以自由更改您的config文件。
实现
安装后,您可以为应用程序实现新功能。
将Mayoz\Token\HasToken特质添加到您的App\User模型中。此特质将为您的模型提供一些辅助方法,允许您检查认证用户的令牌
<?php namespace App; use Mayoz\Token\HasToken; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasToken, Notifiable; // ... }
最后,您将向应用程序添加新的卫士。打开config/auth.php文件并应用以下更改
'guards' => [ // ... 'api' => [ 'driver' => 'multi-token', 'provider' => 'tokens', ], ], 'providers' => [ // ... 'tokens' => [ 'driver' => 'eloquent', 'model' => Mayoz\Token\Token::class, ], ],
恭喜!
用法
当您需要时(登录后或之后的任何操作),使用辅助函数创建新令牌。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TokenController { public function __invoke(Request $request) { $token = $request->user()->generateToken(); return $token; } }
默认情况下,如果没有传递生命周期,令牌永不过期。为了定义过期时间,您可以将时间周期参数(以分钟为单位)传递给generateToken方法。
使用以下命令生成一个10分钟生命周期的新的令牌
$token = $request->user()->generateToken(10);
令牌不会被刷新,令牌到期后将会失效。使用过期令牌的认证尝试将会失败。
认证过程类似于标准Laravel api_token流程
令牌卫士正在寻找令牌
- 首先查找URL参数
?api_token=XXX - 如果不存在令牌,则查找头
Authorization: Bearer XXX
最后,如果您需要当前令牌模型信息,可以使用token方法。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController
{
public function __construct()
{
$this->middleware('auth:api');
}
public function __invoke(Request $request)
{
return [
'user' => $request->user(),
'token' => $request->token(),
];
}
}
令牌生成器
默认情况下,生成的令牌是36个随机字符的字符串。如果您想创建更有意义的(如uuid4)令牌,您可以自由更改生成器方法。
让我们更改生成器以生成uuid4字符串。打开app/Providers/AuthServiceProvider文件并应用以下更改
<?php namespace App\Providers; use Mayoz\Token\Generator; // ... class AuthServiceProvider extends ServiceProvider { // ... /** * Register any authentication / authorization services. * * @return void */ public function boot() { // ... Generator::extend(function () { return \Ramsey\Uuid\Uuid::uuid4()->toString(); }); } }
如果您的应用程序中没有ramsey/uuid包,您可以安装它
composer require ramsey/uuid
干杯。
变更日志
请参阅CHANGELOG以获取更多最近更改的信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
如果您发现任何与安全相关的问题,请使用“Bug”标签创建新问题。所有安全漏洞都将得到及时解决。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。