类 UserMenuCache
java.lang.Object
net.sohelp.boot.admin.core.cache.UserMenuCache
- 所有已实现的接口:
ISohelpCache
用户菜单权限缓存(永不过期,按需失效)
Key 规则:"{userId}" → 权限字符串列表 JSON。
NONE 模式每次直接查库。
该缓存组件负责管理用户的菜单访问权限列表,包括开发者(DEVELOPER)、 管理员(ADMIN)等系统内置角色权限以及通过岗位分配的菜单权限。 缓存采用懒加载策略,首次访问时从数据库加载并写入缓存。
- 从以下版本开始:
- 2023/7/21 15:16
- 作者:
- AaronFung
-
构造器详细资料
-
UserMenuCache
public UserMenuCache()
-
-
方法详细资料
-
init
@PostConstruct public void init()初始化缓存提供者。在 Bean 构造完成后自动调用,通过
SohelpCacheManager创建 名称为"user_menu"、永不过期(TTL=0)的缓存提供者。 -
cacheName
获取缓存名称。- 指定者:
cacheName在接口中ISohelpCache- 返回:
- 缓存名称字符串
"user_menu"
-
cacheDescription
获取缓存的中文描述信息。- 指定者:
cacheDescription在接口中ISohelpCache- 返回:
- 缓存描述字符串
"用户菜单权限缓存"
-
reload
public void reload()重新加载整个缓存。清空所有已缓存的用户菜单权限数据,下次访问时将重新从数据库加载。
- 指定者:
reload在接口中ISohelpCache
-
get
@Comment("\u6839\u636e\u7528\u6237ID\u83b7\u53d6\u6743\u9650\u5217\u8868") public List<String> get(@Comment("\u7528\u6237ID") Long userId) 根据用户ID获取该用户的权限列表。当缓存提供者处于 NONE 模式时,每次调用都直接查询数据库; 否则先检查缓存是否命中,未命中则触发
reload(Long)加载后返回。- 参数:
userId- 用户ID,不能为null- 返回:
- 该用户拥有的权限标识列表,若查询失败则返回空列表
-
validateAuthority
@Comment("\u9a8c\u8bc1\u6743\u9650") public void validateAuthority(@Comment("\u7528\u6237ID") Long userId, @Comment("\u6743\u9650\u4ee3\u7801") String permissionNo) throws AccessPermissionException 验证指定用户是否具有特定权限。从缓存中获取用户的权限列表,判断是否包含指定的权限代码。 如果用户无该权限,则抛出
AccessPermissionException异常。- 参数:
userId- 用户ID,不能为nullpermissionNo- 需要验证的权限代码- 抛出:
AccessPermissionException- 当用户不具备指定权限时抛出
-
remove
@Comment("\u5220\u9664\u7528\u6237\u7f13\u5b58") public void remove(@Comment("\u7528\u6237ID") long userId) 删除指定用户的权限缓存。从缓存中移除该用户的菜单权限数据,下次访问时将重新从数据库加载。
- 参数:
userId- 用户ID
-
reload
@Comment("\u6839\u636e\u7528\u6237\u7684\u6743\u9650\u521d\u59cb\u5316Cache") public void reload(@Comment("\u7528\u6237ID") Long userId) throws SQLException 根据用户ID重新从数据库加载权限信息并写入缓存。先删除旧缓存,然后查询用户信息,构建权限列表后写入缓存。 如果用户不存在则直接返回,不写入任何缓存。
- 参数:
userId- 用户ID,不能为null- 抛出:
SQLException- 当数据库查询失败时抛出
-