From c153cd01974defe0d20ecbbb2c1f2fdc522d05f8 Mon Sep 17 00:00:00 2001
From: Mr.Shi <1878285526@qq.com>
Date: 星期四, 21 九月 2023 18:34:34 +0800
Subject: [PATCH] 企业端
---
server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java | 111 +------------------------------------------------------
1 files changed, 2 insertions(+), 109 deletions(-)
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
index 28b01dc..853e2bb 100644
--- a/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
@@ -27,119 +27,12 @@
*/
public class ShiroAuthFilter extends FormAuthenticationFilter {
- public ShiroAuthFilter(SessionManager sessionManager,ShiroCacheManager shiroCacheManager) {
- super();
- this.sessionManager = (ShiroSessionManager)sessionManager;
- this.cache = shiroCacheManager.getCache("shiro_redis_cache");
- }
- @Override
- protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
- return false;
- }
+ @Override
+ protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
- private int maxSession = 1; //鏈�澶т細璇濇暟閲�
-
- private boolean kickOutAfter = false; //韪㈠嚭鍓嶈�呰繕鏄悗鑰�
- private Cache<String, Deque<Serializable>> cache; //缂撳瓨绠$悊
-
-
- private ShiroSessionManager sessionManager; //浼氳瘽绠$悊
-
- @Override
- protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
- Subject subject = getSubject(request, response);
- if (!subject.isAuthenticated() && !subject.isRemembered()) { //濡傛灉涓嶆槸璁よ瘉杩囧拰璁颁綇瀵嗙爜鐨勶紝灏辩洿鎺ユ斁琛岃姹傦紝閬垮厤閫犳垚璁块棶杩囨參
- // return Boolean.TRUE;
- }
- Session session = subject.getSession(); //鑾峰彇浼氳瘽session
- Object principal = subject.getPrincipal();
- Serializable sessionId = session.getId();
- LoginUserInfo userInfo = (LoginUserInfo) principal;
- if(userInfo == null ){
- HttpServletResponse servletResponse = (HttpServletResponse) response;
- servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
- servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
- return Boolean.FALSE;
-// return super.onAccessDenied(request,response);
- }else if( Constants.equalsInteger(userInfo.getType(), Constants.UserType.COMPANY.getKey()) ){
- return Boolean.TRUE;
-// return super.onAccessDenied(request,response);
- }
-
- String userName = userInfo.getCompanyId() +"_"+ userInfo.getId();
- Deque<Serializable> deque = cache.get(userName);
- if (deque == null) {
- deque = new LinkedList<>();
- }
- if (!deque.contains(sessionId) && session.getAttribute("kickOut") == null) {
- deque.push(sessionId);
- cache.put(userName, deque);
- }
- while (deque.size() > maxSession) {
- Serializable kickOutSessionId;
- if (kickOutAfter) {
- kickOutSessionId = deque.removeFirst();
- cache.put(userName, deque);
- } else {
- kickOutSessionId = deque.removeLast();
- cache.put(userName, deque);
- }
-
- try {
- Session kickOutSession = sessionManager.getSession(new DefaultSessionKey(kickOutSessionId));
- if (kickOutSession != null) {
- kickOutSession.setAttribute("kickOut", Boolean.TRUE);
- }
- } catch (Exception e) {
- e.printStackTrace();
-// log.error("韪㈠嚭寮傚父鏈涪鍑�");
- }
- }
-
- if (session!=null && session.getAttribute("kickOut") != null && (Boolean) session.getAttribute("kickOut") == true) {
- try {
- subject.logout();
- } catch (Exception e) {
- e.printStackTrace();
- }
- saveRequest(request);
HttpServletResponse servletResponse = (HttpServletResponse) response;
servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
return Boolean.FALSE;
}
- return Boolean.TRUE;
- }
-
- public int getMaxSession() {
- return maxSession;
- }
-
- public void setMaxSession(int maxSession) {
- this.maxSession = maxSession;
- }
-
- public boolean isKickOutAfter() {
- return kickOutAfter;
- }
-
- public void setKickOutAfter(boolean kickOutAfter) {
- this.kickOutAfter = kickOutAfter;
- }
-
- public Cache<String, Deque<Serializable>> getCache() {
- return cache;
- }
-
- public void setCache(Cache<String, Deque<Serializable>> cache) {
- this.cache = cache;
- }
-
- public ShiroSessionManager getSessionManager() {
- return sessionManager;
- }
-
- public void setSessionManager(ShiroSessionManager sessionManager) {
- this.sessionManager = sessionManager;
- }
}
--
Gitblit v1.9.3