Shiro Cache配置

要实现Shiro的Cache配置非常简单,默认使用ehcache,直接配置cacheManager制定实现为EhCacheManager,然后通过property制定对应的ehcache-shiro.xml文件

spring配置文件
<!-- 用户授权信息Cache, 采用EhCache -->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml" />
    </bean>

    <!-- Shiro‘s main business-tier object for web-enabled applications -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="userRealm"/>
        <property name="sessionManager" ref="sessionManager"/>
        <property name="cacheManager" ref="cacheManager"/>
        <property name="rememberMeManager" ref="rememberMeManager"/>
    </bean>

然后在ehcache-shiro.xml文件中,配置需要使用的Cache相关信息。

Shiro ehcache配置xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="es_shiro" updateCheck="false">

    <diskStore path="java.io.tmpdir"/>

    <!-- 登录记录缓存 锁定10分钟 -->
    <cache name="passwordRetryCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="0"
           overflowToDisk="false"
           statistics="true">
    </cache>

    <cache name="authorizationCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="0"
           overflowToDisk="false"
           statistics="true">
    </cache>

    <cache name="authenticationCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="0"
           overflowToDisk="false"
           statistics="true">
    </cache>

    <cache name="shiro-activeSessionCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="0"
           overflowToDisk="false"
           statistics="true">
    </cache>

</ehcache>

这里有2个要注意的问题:

1. 如果系统使用了hibernate,hibernate配置了singleton secondary layer cache,那么会导致shiro的cache配置文件不被load的情况,我的解决方案是把singleton改成允许多个cache实例。

2. 如果想查看cache是否生效,使用情况,可以通过jmx来export相关ehcache统计信息。


    <bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
        <property name="beans">
            <map>
                <entry key="com.cloud.DemoSystem:name=ehcacheStatisticsMBean"
                    value-ref="ehCacheMBeanRegistration" />
            </map>
        </property>
         <property name="server" ref="mbeanServer"/>
    </bean>

    <!-- JMX for ehcache -->
     <bean id="ehCacheMBeanRegistration"
                class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">

                <property name="staticMethod"
                        value="net.sf.ehcache.management.ManagementService.registerMBeans"/>
                <property name="arguments">
                        <list>
                                <ref bean="cacheManager"/>
                                <ref bean="mbeanServer"/>
                                <value>true</value>
                                <value>true</value>
                                <value>true</value>
                                <value>true</value>
                        </list>
                </property>
        </bean>
时间: 2024-10-19 15:12:33

Shiro Cache配置的相关文章

Apache Shiro SessionManager配置详解.

SessionManager是在应用程序中为所有Subject提供Session的管理,包括创建,删除,失效及验证等.同其的核心组件一样,SessionManager 也是一个由SecurityManager 维护的顶级组件. 在Shiro中默认提供了一个SessionManager的实现DefaultSessionManager.DefaultSessionManager 提供一个应用程序所需的所有企业级会话管理.可以在任何应用程序中使用. 如果想自定义一个SessionManager,可在S

Apache Shiro学习----配置(与SpringMVC集成)

1.web.xml文件中配置 <!--将shiro的配置文件交给Spring监听器初始化--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml,classpath:spring-shiro-web.xml</param-value> </context-param> <!-

MyBatis Cache配置

MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 true true false localCacheScope 本地缓存,SESSION表示执行的sql结果缓存数据可以在同一个sqlSession共享,而STATEMENT,则同只有在单条语句会被缓存,两条语句不能共享缓存数据 SESSION SESSION STATEMENT     <!-- 默认值 --><setting name="cacheE

简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)

前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一下shiro的大致配置使用流程,希望本篇文章能够后能给大家一种原来shiro这么简单的错觉感觉. 注意:该篇文章的开始是建立在一个完备的spring+mybatis的开发环境中,除了shiro之外的配置基本不会涉及到.做好自己--eguid原创文章 一.依赖的jar包 本篇文章使用shiro-1.4

关于Hbase的cache配置

在hbase中的hfilecache中,0.96版本中新增加了bucket cache, bucket cache通过把hbase.offheapcache.percentage配置为0来启用, 如果hbase.offheapcache.percentage的配置值大于0时,直接使用堆外内存来管理hbase的cache, 通过把hfile.block.cache.size的值设置为0会禁用HBASE的cache功能. 首先在CacheConfig.instantiateBlockCache函数中

解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题

如题,最近使用spring boot集成shiro,在shiroFilter要使用数据库动态给URL赋权限的时候,发现 @Autowired 注入的bean都是null,无法注入mapper.搜了半天似乎网上都没有相关问题,也是奇怪.最后发现 /** * Shiro生命周期处理器 * * @return */ @Bean(name = "lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor getLifecycle

springmvc,mybatis,shiro综合配置示例

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt

springmvc,mybatis,shiro综合配置示例【转】

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt

shiro 验证码 配置

shiro结合spring进行权限管理,项目还未上线,权限系统还未开启,先把用到的验证码和登陆过滤部分功能记录一下 验证码是否开启: <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" > <property name="realm" ref="shiroDbRealm" /> <