Laravel用户认证缓存包

由于laravel的认证每使用一次auth()方法都会进行数据库查询,
为了减少这个查询, 引入一个缓存机制, 可以对登录的用户进行一个数据缓存,
现在做成了一个composer安装包,
到现在已经安装了总次数4000多次,
为了给大家一个选择, 再一次安利给大家, 也求一个star申请ide

github链接附上: LaravelCacheProvider

更新记录

  • v3.1.0

    • 支持 Laravel10
  • v3.0.0

    • 增加模型需要实现 Illuminate\Contracts\Auth\Authenticatable 接口
  • v2.1.0

    • 修复 Undefined variable: model 错误 #2
  • 20200603 增加多模型支持

    • 缓存的Key格式(User单用户): CacheUserProvider:User:id:1
    • 缓存的Key格式(User所有用户): CacheUserProvider:User:single
    • 缓存的Key格式(Admin单用户): CacheUserProvider:Admin:id:1
    • 缓存的Key格式(Admin所有用户): CacheUserProvider:Admin:single

安装

composer require "yangjisen/laravel-cache-provider"

Laravel 应用

  • config/app.php 注册 ServiceProvider (Laravel 5.5 + 无需手动注册)
'providers' => [
     /* 
     * Package Service Providers... 
     */ 
     YangJiSen\CacheUserProvider\ServiceProvider::class,
 ]
  • 创建配置文件:
php artisan vendor:publish --provider="YangJiSen\CacheUserProvider\ServiceProvider"
  • 配置文件说明

    <?php
    return [
      /*
      |--------------------------------------------------------------------------
      | 缓存的保存时间
      |--------------------------------------------------------------------------
      |
      | 默认值(秒):   3600
      | 注意: Laravel5.8以前缓存单位由为分钟, 此处需要自行修改时间
      | @see https://learnku.com/docs/laravel/5.8/upgrade#cache-ttl-in-seconds
      |
      */ 
       'cache_ttl' => env('CACHE_USER_TTL', 3600),
    
       /*
       |-------------------------------------------------------------------------- 
       | 缓存的保存方式
       |-------------------------------------------------------------------------- 
       | 
       | single: 所有的保存为一个缓存键值
       | every: 按照单个用户进行缓存
       | 
       */ 
       'cache_channel' => env('CACHE_USER_CHANNEL', 'every'),
    
      /*
      |--------------------------------------------------------------------------
      | 渴望加载的关联模型
      |--------------------------------------------------------------------------
      |
      | String: a,b,c
      |
      | 使用关联加载时:
      | 关联的数据仅在第一次查询时加载,缓存后不会自动进行更新,需要自行实现关联更新时删除缓存数据
      |
      | @param  \Illuminate\Database\Eloquent\Model  $user
      | 调用删除方法: YangJiSen\CacheUserProvider\CacheForget::CacheForget($user);
      |
      */
      'model_with' => env('CACHE_USER_MODEL_WITH'),
    ];
  • 将配置文件 config/auth.php 中 将授权提供者的驱动修改为 cache 即可

'providers' => [
     'users' => [ 
         'driver' => 'cache',
         'model' => App\User::class
    ],
 ]
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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