参考:https://blog.csdn.net/aqsunkai/article/details/69757017
必须:
@Bean
public EhCacheManager getEhCacheManager(){
EhCacheManager ehcacheManager = new EhCacheManager();
ehcacheManager.setCacheManagerConfigFile("classpath:config/ehcache-shiro.xml");
return ehcacheManager;
}
@Bean(name = "securityManager")
public DefaultWebSecurityManager defaultWebSecurityManager(MyShiroRealm realm){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
//设置realm
securityManager.setRealm(realm);
securityManager.setCacheManager(getEhCacheManager());
return securityManager;
}
ehcache-shiro.xml
然后自己定义的 UserRealm 的 权限校验 doGetAuthorizationInfo 只会走一次了。 ok
--------------------------------------------------------------------------------------------
如果项目整合了 ehcache 和 ehcache-shiro ,maven打包有报错,【ehcache是单例,已经被创建!】
解决方式:ShiroConfiguration中:
@Bean(name = "ehcache")
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("config/cache/ehcache-shiro.xml"));
ehCacheManagerFactoryBean.setShared(true);
return ehCacheManagerFactoryBean;
}
@Bean
public EhCacheManager getEhCacheManager() {
EhCacheManager ehcacheManager = new EhCacheManager();
ehcacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
return ehcacheManager;
}
通过工厂来创建