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);
          });
      }
    }
  • AuthServiceProviderboot 方法

    <?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 协议》,转载必须注明作者和本文链接
喜欢的话就点个赞吧!
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!