spring-shiro.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:util="http://www.springframework.org/schema/util"
  7. xmlns:context="http://www.springframework.org/schema/context"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  12. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
  13. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  14. <bean id="jedisPoolConfig"
  15. class="redis.clients.jedis.JedisPoolConfig">
  16. <property name="maxIdle" value="100" />
  17. <property name="minIdle" value="10" />
  18. <property name="testOnBorrow" value="true" />
  19. </bean>
  20. <bean id="poolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
  21. <property name="minIdle" value="5"/>
  22. <property name="maxIdle" value="20"/>
  23. <property name="maxWaitMillis" value="100000"/>
  24. <property name="maxTotal" value="10000"/>
  25. </bean>
  26. <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
  27. <constructor-arg name="poolConfig" ref="poolConfig"/>
  28. <constructor-arg name="host" value="${jedis.host}"/>
  29. <constructor-arg name="port" value="${jedis.port}"/>
  30. <constructor-arg name="password" value="${jedis.password}"/>
  31. <constructor-arg name="timeout" value="1000000"/>
  32. </bean>
  33. <bean id="redisConnectionFactory"
  34. class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
  35. <property name="hostName" value="${jedis.host}" />
  36. <property name="port" value="${jedis.port}" />
  37. <property name="password" value="${jedis.password}" />
  38. <property name="timeout" value="${jedis.timeout}" />
  39. <property name="poolConfig" ref="jedisPoolConfig" />
  40. <!-- <property name="database" value="${jedis.dbIndex}" /> -->
  41. </bean>
  42. <bean id="redisTemplate"
  43. class="com.goafanti.core.cache.template.FastJsonRedisTemplate">
  44. <constructor-arg index="0"
  45. ref="redisConnectionFactory" />
  46. </bean>
  47. <bean id="sessionRedisTemplate"
  48. class="com.goafanti.core.shiro.cache.template.SessionRedisTemplate">
  49. <constructor-arg index="0"
  50. ref="redisConnectionFactory" />
  51. </bean>
  52. <bean id="cacheManager"
  53. class="com.goafanti.core.cache.ExtendedRedisCacheManager">
  54. <constructor-arg index="0" ref="redisTemplate" />
  55. <property name="defaultExpiration" value="1800" />
  56. </bean>
  57. <bean id="shrioRedisCacheManager"
  58. class="com.goafanti.core.shiro.cache.ShiroRedisCacheManager">
  59. <property name="redisTemplate" ref="sessionRedisTemplate" />
  60. <property name="expire" value="7200" />
  61. </bean>
  62. <bean id="sessionIdGenerator"
  63. class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator" />
  64. <bean id="sessionIdCookie"
  65. class="org.apache.shiro.web.servlet.SimpleCookie">
  66. <constructor-arg value="KEDE_SID" />
  67. <property name="httpOnly" value="true" />
  68. <property name="maxAge" value="2592000" />
  69. <!-- <property name="domain" value=""/> -->
  70. </bean>
  71. <bean id="customSessionListener"
  72. class="com.goafanti.core.shiro.listener.CustomSessionListener">
  73. <property name="redisTemplate" ref="sessionRedisTemplate" />
  74. </bean>
  75. <bean id="enterpriseCacheSessionDAO"
  76. class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
  77. <property name="sessionIdGenerator" ref="sessionIdGenerator" />
  78. </bean>
  79. <!-- -->
  80. <bean id="sessionValidationScheduler"
  81. class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
  82. <!-- -->
  83. <property name="interval"
  84. value="${session.validate.timespan}" />
  85. <property name="sessionManager" ref="sessionManager" />
  86. </bean>
  87. <!-- -->
  88. <bean id="securityManager"
  89. class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
  90. <property name="realm" ref="userRealm" />
  91. <property name="sessionManager" ref="sessionManager" />
  92. <property name="cacheManager" ref="shrioRedisCacheManager" />
  93. </bean>
  94. <bean id="authorizationAttributeSourceAdvisor"
  95. class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
  96. <property name="securityManager" ref="securityManager" />
  97. </bean>
  98. <!-- credential matcher -->
  99. <bean id="credentialsMatcher"
  100. class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
  101. <property name="hashAlgorithmName"
  102. value="${pwd.hash_algorithm_name}" />
  103. <property name="hashIterations"
  104. value="${pwd.hash_iterations}" />
  105. <property name="storedCredentialsHexEncoded" value="true" />
  106. </bean>
  107. <!-- -->
  108. <bean id="userRealm"
  109. class="com.goafanti.core.shiro.token.UserRealm">
  110. <property name="credentialsMatcher" ref="credentialsMatcher" />
  111. </bean>
  112. <!-- Session Manager -->
  113. <bean id="sessionManager"
  114. class="com.goafanti.core.shiro.session.CustomSessionManager">
  115. <!-- class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> -->
  116. <property name="sessionIdUrlRewritingEnabled" value="false" />
  117. <!-- -->
  118. <property name="sessionValidationInterval" value="3600000" />
  119. <!-- -->
  120. <property name="globalSessionTimeout" value="3600000" />
  121. <property name="sessionDAO" ref="enterpriseCacheSessionDAO" />
  122. <property name="cacheManager" ref="shrioRedisCacheManager" />
  123. <!-- session -->
  124. <property name="sessionListeners">
  125. <list>
  126. <ref bean="customSessionListener" />
  127. </list>
  128. </property>
  129. <!-- -->
  130. <property name="sessionValidationScheduler"
  131. ref="sessionValidationScheduler" />
  132. <!-- -->
  133. <property name="sessionValidationSchedulerEnabled"
  134. value="true" />
  135. <!-- -->
  136. <property name="deleteInvalidSessions" value="true" />
  137. <!-- -->
  138. <property name="sessionIdCookie" ref="sessionIdCookie" />
  139. </bean>
  140. <bean id="shiroManager"
  141. class="com.goafanti.core.shiro.service.impl.ShiroManagerImpl" />
  142. <bean id="shiroFilter"
  143. class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  144. <property name="securityManager" ref="securityManager" />
  145. <property name="loginUrl" value="/user/login" />
  146. <property name="successUrl" value="/" />
  147. <property name="unauthorizedUrl" value="/user/login" />
  148. <property name="filterChainDefinitions"
  149. value="#{shiroManager.loadFilterChainDefinitions()}" />
  150. <property name="filters">
  151. <util:map>
  152. <entry key="login">
  153. <bean id="login"
  154. class="com.goafanti.core.shiro.filter.LoginFilter" />
  155. </entry>
  156. <entry key="permission">
  157. <bean id="permission"
  158. class="com.goafanti.core.shiro.filter.PermissionFilter">
  159. <property name="loginUrl" value="/admin/login" />
  160. </bean>
  161. </entry>
  162. <entry key="admin">
  163. <bean id="admin"
  164. class="com.goafanti.core.shiro.filter.AdminFilter">
  165. <property name="loginUrl" value="/admin/login" />
  166. </bean>
  167. </entry>
  168. </util:map>
  169. </property>
  170. </bean>
  171. <!-- -->
  172. <bean id="lifecycleBeanPostProcessor"
  173. class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
  174. </beans>