在没有使用缓存的情况下,每发送一次请求都会调用一次doGetAuthorizationInfo方法来进行用户的授权操作,但是我们知道,一个用户具有的权限一般不会频繁的修改,也就是每次授权的内容都是一样的,所以我们希望在用户登录成功的第一次授权成功后将用户的权限保存在缓存中,下一次请求授权的话就直接从缓存中获取,这样效率会更高一些。
org.apache.shiro
shiro-ehcache
1.2.3
net.sf.ehcache
ehcache-core
2.5.3
/**
* 清除缓存
*/
public void clearCache() {
PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();
super.clearCache(principals);
}
@Autowired
private MyRealm myRealm;
@RequestMapping("/clear")
@ResponseBody
public void clearCache() {
myRealm.clearCache();
}
第一次正常请求会授权,之后访问从缓存中获取。当调用清空缓存方法后,再次请求的时候因为缓存已经空了,所以会再次授权,
场景: 权限修改生效后,立即刷新清空缓存,则可以实现用户不退出生效新的权限