0

我有一个名为 Sites 的资源。

我计划有一个端点如下:

/tenant/:tenantId/users/:userId/sites/:siteId

端点将返回一个站点的树,该树将根据tenantId、userId、siteId 而有所不同。

此端点返回的站点树也将根据另一个资源(即用户/组)中的更新而更改

当站点资源本身发生变化或组发生变化时,如何为给定租户的所有用户丢弃缓存?

我知道可以使用客户端缓存控制标头,但不确定在这种情况下如何使用它们?我也知道阶段缓存清除,但在这种情况下我不需要为所有租户执行此操作,因此不太热衷于此。

4

1 回答 1

1

可以遵循以下方法。

令牌存储和验证

  • 维护表 auth-details-> id,token,user_id,tenant_id 中的令牌列表
  • 使用生存时间在缓存中维护令牌
  • 在处理请求验证令牌时,来自步骤和令牌验证 API 的 auth-details 表

使缓存中的令牌无效

使用 AmazonMQ,并定义发布者在满足无效条件时发布消息。定义负责为特定租户清除缓存的消费者。使用 @CacheEvict 注释来清除特定租户的数据。

@CacheEvict(value = "your-cache-name", key = "#tenantId + '_details'")
  public Long deleteCacheForTenant(Long tenantId) {
    return tenantId;
  }
于 2021-09-24T10:11:33.987 回答