shiro如何在编辑用户权限后,立即清除原来用户的权限缓存
最近在弄权限相关的东西,用了shiro后发现权限的缓存会存在redis中,分配用户角色后,并没有刷新缓存,需要手动修改,在网上看了很多博客后,总算试出来一个好用的,
就是在分配用户角色后,可以使用这段代码来清除想要重置的用户的权限缓存。
/** * 重新赋值权限(在比如:给一个角色临时添加一个权限,需要调用此方法刷新权限,否则还是没有刚赋值的权限) * @param myRealm 自定义的realm * @param username 用户名 */ public static void reloadAuthorizing(MyRealm myRealm,String username){ Subject subject = SecurityUtils.getSubject(); String realmName = subject.getPrincipals().getRealmNames().iterator().next(); //第一个参数为用户名,第二个参数为realmName,test想要操作权限的用户 SimplePrincipalCollection principals = new SimplePrincipalCollection(username,realmName); subject.runAs(principals); myRealm.getAuthorizationCache().remove(subject.getPrincipals()); subject.releaseRunAs(); }