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
- 缓存的Key格式(User单用户):
安装
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 协议》,转载必须注明作者和本文链接
本帖由系统于 3年前 自动加精
如果User有更新或者删除,这个会自动更新数据吗?
之前就一直想问,有没有办法可以不频繁的读数据库。 因为first()一次就读一个数据库,感觉太浪费。 多谢你这个拓展。
请问这个支持 laravel passport吗?
这个不错啊
laravel 就是棒啊,,,
可以添加缓存别的模型吗
:joy: :joy: :joy:老哥 这个具体怎么用呀 有没有例子 本人新萌 哈哈哈
很棒! 我来试试能不能支持sanctum
laravel8能用吗
可以和 smartins/passport-multiauth 这个多表认证的包一起用吗
@Summer 感谢大大的加精
多模型有点不对的。