Laravel API端点的最小化基于令牌的认证。

v2.0.0 2024-03-12 21:13 UTC

This package is auto-updated.

Last update: 2024-09-12 22:14:50 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Laravel API端点的最小化基于令牌的授权。

安装

您可以通过Composer安装此包

composer require ryangjchandler/bearer

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --provider="RyanChandler\Bearer\BearerServiceProvider" --tag="bearer-migrations"
php artisan migrate

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

php artisan vendor:publish --provider="RyanChandler\Bearer\BearerServiceProvider" --tag="bearer-config"

用法

创建令牌

要创建新令牌,您可以使用RyanChandler\Bearer\Models\Token模型。

use RyanChandler\Bearer\Models\Token;

$token = Token::create([
    'token' => Str::random(32),
]);

或者,您可以使用RyanChandler\Bearer\Facades\Bearer外观来生成令牌。

use RyanChandler\Bearer\Facades\Bearer;

$token = Bearer::generate(domains: [], expiresAt: null);

默认情况下,Bearer使用按时间排序的UUID作为令牌字符串。您可以通过将Closure传递给Bearer::generateTokenUsing来修改此行为。此函数必须返回一个字符串以存储到数据库中。

use RyanChandler\Bearer\Facades\Bearer;

Bearer::generateTokenUsing(static function (): string {
    return (string) Str::orderedUuid();
});

检索Token实例

要从token字符串检索Token实例,您可以使用RyanChandler\Bearer\Facades\Bearer外观。

use RyanChandler\Bearer\Facades\Bearer;

$token = Bearer::find('my-token-string');

在请求中使用令牌

Bearer使用请求的Authorization头部来检索令牌实例。您应该这样格式化

Authorization: Bearer my-token-string

验证令牌

要验证令牌,请将RyanChandler\Bearer\Http\Middleware\VerifyBearerToken中间件添加到您的API路由中。

use RyanChandler\Bearer\Http\Middleware\VerifyBearerToken;

Route::get('/endpoint', MyEndpointController::class)->middleware(VerifyBearerToken::class);

令牌过期

如果您希望令牌在特定时间过期,您可以使用expires_at列。

$token = Bearer::find('my-token-string');

$token->update([
    'expires_at' => now()->addWeek(),
]);

或者直接使用类的辅助方法。

$token = Bearer::find('my-token-string');

$token->addWeeks(1)->save();

如果您在此时间后尝试使用令牌,它将返回一个错误。

将令牌限制在特定域

令牌的使用可以限制在特定域。Bearer使用请求的方案和主机来决定令牌是否有效。

$token = Bearer::find('my-token-string');

$token->update([
    'domains' => [
        'https://laravel.net.cn',
    ],
]);

如果您尝试从除https://laravel.net.cn之外的其他域使用此令牌,它将失败并中止。

注意:域名检查包括方案,因此如果需要,请确保同时添加HTTP和HTTPS的情况。

测试

composer test

贡献

有关详细信息,请参阅CONTRIBUTING

安全漏洞

请审查我们关于如何报告安全漏洞的安全策略

鸣谢

许可

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