passport 学习笔记
个人令牌
使用 Laravel Passport 处理 API 认证
ps: laravel 6.x passport安装命令
composer require laravel/passport=~8.0
令牌客户端
待续
设置token过期时间
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Laravel\Passport\Passport;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Passport::routes();
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
Passport::personalAccessTokensExpireIn(now()->addMonths(6));
}
}
设置token缓存
创建 CacheTokenRepository
<?php namespace App\Repositories\Passport; use Illuminate\Support\Facades\Cache; use Laravel\Passport\TokenRepository; class CacheTokenRepository extends TokenRepository { protected $cache_key = 'passport-token'; public function find($id) { return Cache::remember("$this->cache_key-id-$id", now()->addMinutes(30), function () use ($id) { return parent::find($id); }); } public function findForUser($id, $userId) { return Cache::remember("$this->cache_key-id-$id-user-$userId", now()->addMinutes(30), function () use ($id, $userId) { return parent::findForUser($id, $userId); }); } public function forUser($userId) { return Cache::remember("$this->cache_key-user-$userId", now()->addMinutes(30), function () use ($userId) { return parent::forUser($userId); }); } }
AuthServiceProvider 的 boot 方法
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; use Laravel\Passport\TokenRepository; use App\Repositories\Passport\CacheTokenRepository; class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ // 'App\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); $this->app->singleton(TokenRepository::class, function () { return new CacheTokenRepository(); }); } }
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: