7.9. 用户缓存
当用户对象由 ID、用户名或电子邮件查询被缓存时。当用户对象被缓存时,它会迭代整个 UserModel
接口,并将这些信息拉取到一个本地只读缓存。在集群中,这个缓存仍然是本地的,但它会变为无效的缓存。修改用户对象时,它将被驱除。这个驱除事件会传播到整个集群,以便其他节点的用户缓存也无效。
7.9.1. 管理用户缓存 复制链接链接已复制到粘贴板!
您可以通过调用 KeycloakSession.userCache ()
来访问用户缓存。
有方法可以驱除特定用户、特定域或整个缓存中包含的用户。
7.9.2. OnUserCache 回调接口 复制链接链接已复制到粘贴板!
您可能需要缓存特定于供应商的实现的额外信息。每当缓存用户时,User Storage SPI 具有回调: org.keycloak.models.cache.OnUserCache
。
public interface OnUserCache { void onCache(RealmModel realm, CachedUserModel user, UserModel delegate); }
public interface OnUserCache {
void onCache(RealmModel realm, CachedUserModel user, UserModel delegate);
}
如果您的供应商类应该实现这个接口(如果它想要这个回调)。UserModel
delegate 参数是您的供应商返回的 UserModel
实例。CachedUserModel
是一个展开的 UserModel
接口。这是在本地本地存储中缓存的实例。
这个 CachedUserModel
接口允许您从缓存中驱除用户并获取提供程序 UserModel
实例。getCachedWith ()
方法返回一个映射,允许您缓存与用户相关的其他信息。例如,凭证不是 UserModel
接口的一部分。如果要在内存中缓存凭据,您要使用 getCachedWith ()
方法实施 OnUserCache
和缓存用户凭证。
7.9.3. 缓存策略 复制链接链接已复制到粘贴板!
在用户存储供应商的管理控制台管理页面中,您可以指定唯一的缓存策略。