spring-shiro.xml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  10. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
  11. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  12. <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
  13. <property name="maxIdle" value="100" />
  14. <property name="minIdle" value="10" />
  15. <property name="testOnBorrow" value="true" />
  16. </bean>
  17. <bean id="redisConnectionFactory"
  18. class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
  19. <property name="hostName" value="${jedis.host}" />
  20. <property name="port" value="${jedis.port}" />
  21. <property name="password" value="${jedis.password}" />
  22. <property name="timeout" value="${jedis.timeout}" />
  23. <property name="poolConfig" ref="jedisPoolConfig" />
  24. <!-- <property name="database" value="${jedis.dbIndex}" /> -->
  25. </bean>
  26. <bean id="redisTemplate" class="com.goafanti.core.cache.template.FastJsonRedisTemplate">
  27. <constructor-arg index="0" ref="redisConnectionFactory" />
  28. </bean>
  29. <bean id="jedisQueueListener" class="com.goafanti.easemob.queue.EasemobRedisQueueListener"/>
  30. <bean id="jedisQueue" class="com.goafanti.easemob.queue.EasemobRedisQueue" destroy-method="destroy">
  31. <property name="redisTemplate" ref="redisTemplate"></property>
  32. <property name="key" value="easemob:queue"></property>
  33. <property name="listener" ref="jedisQueueListener"></property>
  34. </bean>
  35. <bean id="easemobUtils" class="com.goafanti.easemob.EasemobUtils"/>
  36. <bean id="sessionRedisTemplate" class="com.goafanti.core.shiro.cache.template.SessionRedisTemplate">
  37. <constructor-arg index="0" ref="redisConnectionFactory" />
  38. </bean>
  39. <bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
  40. <constructor-arg index="0" ref="redisTemplate" />
  41. <property name="defaultExpiration" value="86400" />
  42. </bean>
  43. <bean id="shrioRedisCacheManager" class="com.goafanti.core.shiro.cache.ShiroRedisCacheManager">
  44. <property name="redisTemplate" ref="sessionRedisTemplate" />
  45. <property name="expire" value="43200" />
  46. </bean>
  47. <bean id="sessionIdGenerator"
  48. class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator" />
  49. <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
  50. <constructor-arg value="AFT_SID" />
  51. <property name="httpOnly" value="true" />
  52. <property name="maxAge" value="1296000" />
  53. <!-- <property name="domain" value=""/> -->
  54. </bean>
  55. <bean id="customSessionListener" class="com.goafanti.core.shiro.listener.CustomSessionListener">
  56. <property name="redisTemplate" ref="sessionRedisTemplate" />
  57. </bean>
  58. <bean id="enterpriseCacheSessionDAO"
  59. class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
  60. <property name="sessionIdGenerator" ref="sessionIdGenerator" />
  61. </bean>
  62. <!-- -->
  63. <bean id="sessionValidationScheduler"
  64. class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
  65. <!-- -->
  66. <property name="interval" value="${session.validate.timespan}" />
  67. <property name="sessionManager" ref="sessionManager" />
  68. </bean>
  69. <!-- -->
  70. <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
  71. <property name="realm" ref="userRealm" />
  72. <property name="sessionManager" ref="sessionManager" />
  73. <property name="cacheManager" ref="shrioRedisCacheManager" />
  74. </bean>
  75. <bean id="authorizationAttributeSourceAdvisor"
  76. class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
  77. <property name="securityManager" ref="securityManager" />
  78. </bean>
  79. <!-- credential matcher -->
  80. <bean id="credentialsMatcher"
  81. class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
  82. <property name="hashAlgorithmName" value="${pwd.hash_algorithm_name}" />
  83. <property name="hashIterations" value="${pwd.hash_iterations}" />
  84. <property name="storedCredentialsHexEncoded" value="true" />
  85. </bean>
  86. <!-- -->
  87. <bean id="userRealm" class="com.goafanti.core.shiro.token.UserRealm">
  88. <property name="credentialsMatcher" ref="credentialsMatcher" />
  89. </bean>
  90. <!-- Session Manager -->
  91. <bean id="sessionManager"
  92. class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
  93. <property name="sessionIdUrlRewritingEnabled" value="false" />
  94. <!-- -->
  95. <property name="sessionValidationInterval" value="1800000" />
  96. <!-- -->
  97. <property name="globalSessionTimeout" value="1800000" />
  98. <property name="sessionDAO" ref="enterpriseCacheSessionDAO" />
  99. <property name="cacheManager" ref="shrioRedisCacheManager" />
  100. <!-- session -->
  101. <property name="sessionListeners">
  102. <list>
  103. <ref bean="customSessionListener" />
  104. </list>
  105. </property>
  106. <!-- -->
  107. <property name="sessionValidationScheduler" ref="sessionValidationScheduler" />
  108. <!-- -->
  109. <property name="sessionValidationSchedulerEnabled" value="true" />
  110. <!-- -->
  111. <property name="deleteInvalidSessions" value="true" />
  112. <!-- -->
  113. <property name="sessionIdCookie" ref="sessionIdCookie" />
  114. </bean>
  115. <bean id="shiroManager" class="com.goafanti.core.shiro.service.impl.ShiroManagerImpl" />
  116. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  117. <property name="securityManager" ref="securityManager" />
  118. <property name="loginUrl" value="/user/login" />
  119. <property name="successUrl" value="/" />
  120. <property name="unauthorizedUrl" value="/user/login" />
  121. <property name="filterChainDefinitions" value="#{shiroManager.loadFilterChainDefinitions()}" />
  122. <property name="filters">
  123. <util:map>
  124. <entry key="login">
  125. <bean id="login" class="com.goafanti.core.shiro.filter.LoginFilter" />
  126. </entry>
  127. <entry key="permission">
  128. <bean id="permission" class="com.goafanti.core.shiro.filter.PermissionFilter">
  129. <property name="loginUrl" value="/admin/login" />
  130. </bean>
  131. </entry>
  132. <entry key="admin">
  133. <bean id="admin" class="com.goafanti.core.shiro.filter.AdminFilter">
  134. <property name="loginUrl" value="/admin/login" />
  135. </bean>
  136. </entry>
  137. </util:map>
  138. </property>
  139. </bean>
  140. <!-- -->
  141. <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
  142. </beans>