请问大家都是如何替换 easywechat 的 access_token 缓存的
1. 运行环境
1). 当前使用的 Laravel 版本?
9.27.0
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
8.1.9
php-fpm 版本:
使用 octane 加速器
3). 当前系统
apline:3.16
4). 业务环境
开发环境
2. 问题描述?
我正在开发一个扩展包,使用 easywechat 访问公众平台的服务,考虑到以后可能会部署到集群上,所以希望将 access_token 保存到数据库和分布式缓存中。请问大家都是怎么做的?
我去看了一下目前执行的结果,发现 easywechat 默认使用的是 Symfony\Component\Cache\Adapter\FilesystemAdapter
将数据缓存到系统默认的临时目录中的文件中,我想这样在集群中会导致 access_token 被不停的刷新。所以想采用分布式缓存替换掉这个存储。
另外发现一个问题:
easywechat 中的代码中采用了 appid 和 秘钥明文 拼接缓存key进行存储,实际缓存文件名也确实如此。代码如下(版本 6.7.4):
public function getKey(): string
{
return $this->key ?? $this->key = sprintf('official_account.access_token.%s.%s', $this->appId, $this->secret);
}
这样我认为不太安全,我认为至少应该用秘钥的哈希值构造缓存 key 。
easywechat.com/5.x/customize/cache...