6.缓存管理
如图所示:
在第一次进行用户认证和用户授权的请求时,通过Realm会执行doGetAuthorizationInfo()方法和doGetAuthenticationInfo方法,然后操作数据库查询相关的认证信息和用户所拥有的权限。通过缓存管理器会把每次请求的认证或者是权限的缓存信息存入redis中。当再次发起相同的请求时不会走数据库,而是通过缓存管理器读取redis中的数据。
权限缓存:以AuthorizingRealm中的getAuthorizationInfo方法为切入点:
其中key为:shiro:cache:com.ikw.fir.admin.util.shiro.UserAuthorizingRealm.authorizationCache:用户id value为:该用户的权限和角色信息。
认证缓存:以AuthenticatingRealm中的getAuthenticationInfo方法为切入点:
进入getCacheAuthenticationInfo方法
进入cacheAuthenticationInfoIfPossible方法
其中key为:shiro:cache:com.ikw.fir.admin.util.shiro.UserAuthorizingRealm.authenticationCache:用户id value为:用户的实体对象。