think-authz
think-authz copied to clipboard
多站点策略缓存问题:使用数据库连接和表名作为缓存KEY
多站点策略缓存问题:使用数据库连接和表名作为缓存KEY
@techoner
@Tinywan It is recommended to add the cache configuration, refer to: Laravel-authz
@techoner
- 1、目前该扩展在项目中是在多站点使用的,也就是说 connection(连接不同的数据库) 每次都是动态赋值的,而不是固定的写死的配置文件中的
- 2、如果缓存是固定的配置文件,则导致每个站点的缓存都一样,从而最新的站点缓存不会被缓存。缓存是放在同一个Redis实例的同一个数据库中。
- 3、多租户不同数据库权限配置,如:
jiangxi.cabin_rules
缓存KEY,是缓存的江西casbin权限。beijing.cabin_rules
缓存KEY,是缓存的北京casbin权限。jiangxi
和beijing
标识不同的站点和不同的数据库,即不同的站点会有自己的数据库以及casbin策略规则表。
这是我整理笔记截图
@Tinywan I think the use of caching configuration is more universal, and your caching strategy can be one of them.
@techoner 1、配置文件单站点是没什么问题。 2、现在是多站点多租户问题请问该如何解决这个缓存问题呢?哈哈
多站点可以有不同配置文件,配置不同的key即可,甚至可以配置不同的缓存驱动使用不同的redis库.
主要是缓存key目前是写死的 $rows = $this->model->cache('tauthz')
突然想到一个好办法:就是缓存key直接使用 $this->connection
即可,如果不为空,则$rows = $this->model->cache('tauthz')
,否则$rows = $this->model->cache($this->connection)
@Tinywan 这个笔记可以开源出来么
这个一直不敢升级,没升级
@Tinywan 希望这个笔记可以开源出来,能贡献到官网文档就更好了
尽量哈