|
4 | 4 | import lombok.extern.slf4j.Slf4j; |
5 | 5 | import org.apache.shiro.codec.Base64; |
6 | 6 | import org.apache.shiro.mgt.SecurityManager; |
| 7 | +import org.apache.shiro.session.SessionListener; |
| 8 | +import org.apache.shiro.session.mgt.SessionManager; |
7 | 9 | import org.apache.shiro.spring.LifecycleBeanPostProcessor; |
8 | 10 | import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; |
9 | 11 | import org.apache.shiro.spring.web.ShiroFilterFactoryBean; |
10 | 12 | import org.apache.shiro.web.mgt.CookieRememberMeManager; |
11 | 13 | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; |
12 | 14 | import org.apache.shiro.web.servlet.SimpleCookie; |
| 15 | +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; |
13 | 16 | import org.crazycake.shiro.RedisCacheManager; |
14 | 17 | import org.crazycake.shiro.RedisManager; |
| 18 | +import org.crazycake.shiro.RedisSessionDAO; |
15 | 19 | import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; |
16 | 20 | import org.springframework.context.annotation.Bean; |
17 | 21 | import org.springframework.context.annotation.Configuration; |
18 | 22 | import org.springframework.context.annotation.DependsOn; |
19 | 23 |
|
| 24 | +import java.util.ArrayList; |
| 25 | +import java.util.Collection; |
20 | 26 | import java.util.LinkedHashMap; |
21 | 27 |
|
22 | 28 | /** |
@@ -77,6 +83,8 @@ public SecurityManager securityManager() { |
77 | 83 | securityManager.setRememberMeManager(rememberMeManager()); |
78 | 84 | // 加载 redisManager |
79 | 85 | securityManager.setCacheManager(cacheManager()); |
| 86 | + // 加载 SessionManager |
| 87 | + securityManager.setSessionManager(sessionManager()); |
80 | 88 | return securityManager; |
81 | 89 | } |
82 | 90 |
|
@@ -182,4 +190,21 @@ public ShiroDialect shiroDialect() { |
182 | 190 | return new ShiroDialect(); |
183 | 191 | } |
184 | 192 |
|
| 193 | + @Bean |
| 194 | + public RedisSessionDAO sessionDAO() { |
| 195 | + RedisSessionDAO redisSessionDAO = new RedisSessionDAO(); |
| 196 | + redisSessionDAO.setRedisManager(redisManager()); |
| 197 | + return redisSessionDAO; |
| 198 | + } |
| 199 | + |
| 200 | + @Bean |
| 201 | + public SessionManager sessionManager() { |
| 202 | + DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); |
| 203 | + Collection<SessionListener> listeners = new ArrayList<SessionListener>(); |
| 204 | + listeners.add(new ShiroSessionListener()); |
| 205 | + sessionManager.setSessionListeners(listeners); |
| 206 | + sessionManager.setSessionDAO(sessionDAO()); |
| 207 | + return sessionManager; |
| 208 | + } |
| 209 | + |
185 | 210 | } |
0 commit comments