Laravel 优化 Auth 使用缓存驱动

更新记录

  • 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 协议》,转载必须注明作者和本文链接
本帖由系统于 2年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 40

如果User有更新或者删除,这个会自动更新数据吗?

4年前 评论
小学毕业生 (楼主) 4年前
IceBay 4年前
小学毕业生 (楼主) 4年前

之前就一直想问,有没有办法可以不频繁的读数据库。 因为first()一次就读一个数据库,感觉太浪费。 多谢你这个拓展。

4年前 评论
黑哈尔

请问这个支持 laravel passport吗?

4年前 评论
小学毕业生 (楼主) 4年前
黑哈尔 (作者) 4年前
gyp719 3年前
小学毕业生 (楼主) 3年前
gyp719 3年前
小学毕业生 (楼主) 3年前
gyp719 3年前
小学毕业生 (楼主) 3年前

这个不错啊

4年前 评论
小学毕业生 (楼主) 4年前

laravel 就是棒啊,,,

4年前 评论
小学毕业生 (楼主) 4年前

可以添加缓存别的模型吗

3年前 评论
小学毕业生 (楼主) 3年前
小学毕业生 (楼主) 3年前
小学毕业生 (楼主) 3年前
yjboy (作者) 3年前
yjboy (作者) 3年前

:joy: :joy: :joy:老哥 这个具体怎么用呀 有没有例子 本人新萌 哈哈哈

3年前 评论
小学毕业生 (楼主) 3年前
yjboy (作者) 3年前

很棒! 我来试试能不能支持sanctum

3年前 评论
小学毕业生 (楼主) 3年前
wzjsnbwxh (作者) 3年前
wzjsnbwxh (作者) 3年前

laravel8能用吗

3年前 评论
小学毕业生 (楼主) 3年前

可以和 smartins/passport-multiauth 这个多表认证的包一起用吗

2年前 评论

多模型有点不对的。

file

1年前 评论
waney (作者) 1年前
小学毕业生 (楼主) 1年前
waney (作者) 1年前

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