使用 Laravel Keyable 为您的 Laravel 模型添加 API 密钥
发布于 作者 Paul Redmond
Laravel Keyable 是由 Liran Cohen 开发的一个包,它允许您为任何模型添加 API 密钥,并将传入的请求与相应的模型关联起来。您还可以使用策略来授权请求。
此包通过将 Keyable
特性添加到给定模型(例如:公司模型)来实现,该特性会在模型和 API 密钥之间创建多态关联。
use Illuminate\Database\Eloquent\Model;use Givebutter\LaravelKeyable\Keyable; class Account extends Model{ use Keyable; // ...}
使用该包提供的中间件,令牌将通过可配置的策略进行验证,该策略由承载令牌、自定义标头(例如:X-Authorization
)或查询参数组成。
验证后,您将配置一个策略,并在控制器中像这样检查授权,例如
<?php namespace App\Http\Controllers\PostController; use App\Models\Post;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Givebutter\LaravelKeyable\Auth\AuthorizesKeyableRequests; class PostController extends Controller { use AuthorizesKeyableRequests; public function show(Post $post) { $this->authorizeKeyable('view', $post); // ... }}
在控制器中,您可以根据添加到请求对象的“可关联”模型进一步限定查询范围
$model = $request->keyable; // Example of scoping the API resource$model->foo()->get();
最后,您可以使用提供的 artisan 命令为给定模型创建 API 密钥
php artisan api-key:generate --id=1 --type="App\Models\Account"
您可以在 GitHub 上的 givebutter/laravel-keyable 了解更多关于此包的信息,获取完整的安装说明,并查看源代码。