Skip to content

Commit bd4e27f

Browse files
committed
添加shiro 会话管理
1 parent d1b2609 commit bd4e27f

File tree

4 files changed

+47
-3
lines changed

4 files changed

+47
-3
lines changed

springboot-shiro/readme.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# springboot + shiro
2+
## 介绍
3+
springboot + shiro + mybatis-plus 集成项目, 使用 mybatis-plus 生成 entity 和 dao 代码,集成 shiro 的权限控制
4+
5+
## 需要知识
6+
7+
* springboot
8+
* java多线程和网络编程
9+
10+
## 源码
11+
见本项目
12+
13+
14+
## 收获
15+
Please feel free to contact us with any questions you may have.
16+
17+
## 参考
18+
https://mrbird.cc/tags/Shiro/

springboot-shiro/src/main/java/com/springboot/demo/common/auth/ShiroConfig.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,25 @@
44
import lombok.extern.slf4j.Slf4j;
55
import org.apache.shiro.codec.Base64;
66
import org.apache.shiro.mgt.SecurityManager;
7+
import org.apache.shiro.session.SessionListener;
8+
import org.apache.shiro.session.mgt.SessionManager;
79
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
810
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
911
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
1012
import org.apache.shiro.web.mgt.CookieRememberMeManager;
1113
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
1214
import org.apache.shiro.web.servlet.SimpleCookie;
15+
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
1316
import org.crazycake.shiro.RedisCacheManager;
1417
import org.crazycake.shiro.RedisManager;
18+
import org.crazycake.shiro.RedisSessionDAO;
1519
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
1620
import org.springframework.context.annotation.Bean;
1721
import org.springframework.context.annotation.Configuration;
1822
import org.springframework.context.annotation.DependsOn;
1923

24+
import java.util.ArrayList;
25+
import java.util.Collection;
2026
import java.util.LinkedHashMap;
2127

2228
/**
@@ -77,6 +83,8 @@ public SecurityManager securityManager() {
7783
securityManager.setRememberMeManager(rememberMeManager());
7884
// 加载 redisManager
7985
securityManager.setCacheManager(cacheManager());
86+
// 加载 SessionManager
87+
securityManager.setSessionManager(sessionManager());
8088
return securityManager;
8189
}
8290

@@ -182,4 +190,21 @@ public ShiroDialect shiroDialect() {
182190
return new ShiroDialect();
183191
}
184192

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+
185210
}

springboot-shiro/src/main/resources/templates/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<a shiro:hasPermission="user:add" th:href="@{/user/add}">新增用户</a>
1515
<a shiro:hasPermission="user:delete" th:href="@{/user/delete}">删除用户</a>
1616
</div>
17-
<a th:href="@{/logout}">注销</a>
17+
<a shiro:hasRole="管理员" th:href="@{/online/index}">在线用户管理</a>
18+
<a th:href="@{/logout}">注销</a>
1819
</body>
1920
</html>

tomcatServer3.0/src/com/hjy/server/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void init(){
3737
e.printStackTrace();
3838
}
3939
}
40-
public void recive(){
40+
public void receive(){
4141
try {
4242
Socket client = server.accept();
4343
ServerThread thread = new ServerThread(client);
@@ -60,7 +60,7 @@ public static void main(String[] args) {
6060
//创建服务器
6161
server2.init();
6262
while(true){
63-
server2.recive();
63+
server2.receive();
6464
}
6565
}
6666

0 commit comments

Comments
 (0)