larksuite / node-sdk

larksuite open sdk for nodejs
MIT License
136 stars 27 forks source link

Client.cache 错误复用 #26

Closed noahziheng closed 1 year ago

noahziheng commented 1 year ago

Problem

目前的 Token 获取后都会存储在 Client.cache 中,其值源为: 6d63c4b6-a135-4f82-9b29-e87e1acaec3f

其中 internalCache 是个全局单例,会造成 Token 在同一个进程的多个 Client 之间被错误复用(有一个 Token 后将不再获取,即便是调用的另一个 Client/Tenant)

同时,当试图关闭缓存以绕过问题时会发现:


Solution

Client.cache 调整为每次 Client 实例化时新初始化一个 DefaultCache,以保证 Client 间信息隔离

mazhe-nerd commented 1 year ago

如果要自定义传token的话,方法见https://github.com/larksuite/node-sdk/issues/25; 多实例下看起来确实会有问题,解决方案:

  1. 修改cache的数据结构,以appId为维度增加namespace字段;
  2. 增加cache校验逻辑,如果不符合新的数据结构,打印error。

我改一下

mazhe-nerd commented 1 year ago

1.10.0可用