Browse Source

退出登录清除缓存信息

hejq 7 years ago
parent
commit
0b14c7f504

+ 4 - 4
src/main/java/com/uas/platform/b2bManage/controller/AccountController.java

@@ -15,9 +15,9 @@ import javassist.NotFoundException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.support.SessionStatus;
 
 import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -64,10 +64,10 @@ public class AccountController extends BaseController {
 	 * @throws IOException
 	 */
 	@RequestMapping(value = "/logout", method = RequestMethod.POST)
-	public ModelMap logout() throws IOException {
+	public ModelMap logout(SessionStatus sessionStatus) throws IOException {
 		SystemSession.clear();
-        request.getSession().setAttribute("user", null);
-        request.getSession().setAttribute("ipAddress", null);
+        request.getSession().invalidate();
+        sessionStatus.setComplete();
         useLogService.appendLog(UseType.LOGOUT.code(), null, AgentUtils.getIp(request));
 		return success();
 	}

+ 68 - 4
src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2bManage.web.filter;
 
+import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2bManage.core.support.SystemSession;
 import com.uas.platform.b2bManage.model.User;
 import com.uas.platform.b2bManage.service.UserService;
@@ -16,6 +17,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
+import javax.servlet.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -28,13 +30,10 @@ import java.io.UnsupportedEncodingException;
  * @author hejq
  * @date 2018-04-23 15:48
  */
-public class SSOInterceptor extends HandlerInterceptorAdapter {
+public class SSOInterceptor extends HandlerInterceptorAdapter implements Filter {
 
     private static final Logger log = Logger.getLogger(SSOInterceptor.class);
 
-    @Autowired
-    private UserService userService;
-
     /**
      * This implementation always returns {@code true}.
      */
@@ -72,6 +71,7 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
         Object ip = request.getSession().getAttribute("ipAddress");
         if (user != null && AgentUtils.getIp(request).equals(ip)) {
             SystemSession.setUser((User) user);
+            log.info("登录成功," + JSON.toJSONString(user));
         }
     }
 
@@ -126,4 +126,68 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
                                 HttpServletResponse response, Object handler, Exception ex)
             throws Exception {
     }
+
+    /**
+     * Called by the web container to indicate to a filter that it is being placed into
+     * service. The servlet container calls the init method exactly once after instantiating the
+     * filter. The init method must complete successfully before the filter is asked to do any
+     * filtering work. <br><br>
+     * <p>
+     * The web container cannot place the filter into service if the init method either<br>
+     * 1.Throws a ServletException <br>
+     * 2.Does not return within a time period defined by the web container
+     *
+     * @param filterConfig
+     */
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    /**
+     * The <code>doFilter</code> method of the Filter is called by the container
+     * each time a request/response pair is passed through the chain due
+     * to a client request for a resource at the end of the chain. The FilterChain passed in to this
+     * method allows the Filter to pass on the request and response to the next entity in the
+     * chain.<p>
+     * A typical implementation of this method would follow the following pattern:- <br>
+     * 1. Examine the request<br>
+     * 2. Optionally wrap the request object with a custom implementation to
+     * filter content or headers for input filtering <br>
+     * 3. Optionally wrap the response object with a custom implementation to
+     * filter content or headers for output filtering <br>
+     * 4. a) <strong>Either</strong> invoke the next entity in the chain using the FilterChain object (<code>chain.doFilter()</code>), <br>
+     * * 4. b) <strong>or</strong> not pass on the request/response pair to the next entity in the filter chain to block the request processing<br>
+     * * 5. Directly set headers on the response after invocation of the next entity in the filter chain.
+     *
+     * @param request
+     * @param response
+     * @param chain
+     */
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        HttpServletResponse hsr = (HttpServletResponse) response;
+        // HTTP 1.1.
+        hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
+        // HTTP 1.0.
+        hsr.setHeader("Pragma", "no-cache");
+        // Proxies.
+        hsr.setDateHeader("Expires", 0);
+        chain.doFilter(request, hsr);
+    }
+
+    /**
+     * Called by the web container to indicate to a filter that it is being taken out of service. This
+     * method is only called once all threads within the filter's doFilter method have exited or after
+     * a timeout period has passed. After the web container calls this method, it will not call the
+     * doFilter method again on this instance of the filter. <br><br>
+     * <p>
+     * This method gives the filter an opportunity to clean up any resources that are being held (for
+     * example, memory, file handles, threads) and make sure that any persistent state is synchronized
+     * with the filter's current state in memory.
+     */
+    @Override
+    public void destroy() {
+
+    }
 }

+ 1 - 1
src/main/webapp/WEB-INF/views/normal/enterprise.html

@@ -13,7 +13,7 @@
 	<meta http-equiv="X-UA-Compatible" content="IE=8">
 	<meta http-equiv="Expires" content="0">
 	<meta http-equiv="Pragma" content="no-cache">
-	<meta http-equiv="Cache-control" content="no-cache">
+	<meta http-equiv="Cache-control" content="no-cache, must-revalidate">
 	<meta http-equiv="Cache" content="no-cache">
 	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
 	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />

+ 4 - 1
src/main/webapp/WEB-INF/views/normal/index.html

@@ -10,7 +10,10 @@
 <meta itemprop="name" content="优软云 - 一个轻盈、便捷、智慧的产业互联网综合服务平台">
 <meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
 <meta name="Description" content="优软云提供六大服务:B2B商务、优软商城、优企云服、金融服务、公共服务、会员中心,旨在解决电子信息行业企业管理的众多难题。我们秉持“让企业不再难,令生意更简单”的理念,基于垂直细分的市场,打造了一个轻盈、便捷、智慧的产业互联网综合服务平台。">
-<meta name="baidu-site-verification" content="tamBdrxeYx" />
+<meta http-equiv="Expires" content="0">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-control" content="no-cache, must-revalidate">
+<meta http-equiv="Cache" content="no-cache">
 <link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
 <link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
 <link rel="stylesheet"

+ 4 - 4
src/main/webapp/WEB-INF/views/normal/inviteList.html

@@ -11,10 +11,10 @@
 	<meta name="baidu-site-verification" content="tamBdrxeYx" />
 	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 	<meta http-equiv="X-UA-Compatible" content="IE=8">
-	<meta http-equiv="Expires" content="0">
-	<meta http-equiv="Pragma" content="no-cache">
-	<meta http-equiv="Cache-control" content="no-cache">
-	<meta http-equiv="Cache" content="no-cache">
+    <meta http-equiv="Expires" content="0">
+    <meta http-equiv="Pragma" content="no-cache">
+    <meta http-equiv="Cache-control" content="no-cache, must-revalidate">
+    <meta http-equiv="Cache" content="no-cache">
 	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
 	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
 	<link rel="stylesheet"

+ 1 - 1
src/main/webapp/WEB-INF/views/normal/logs.html

@@ -13,7 +13,7 @@
 	<meta http-equiv="X-UA-Compatible" content="IE=8">
 	<meta http-equiv="Expires" content="0">
 	<meta http-equiv="Pragma" content="no-cache">
-	<meta http-equiv="Cache-control" content="no-cache">
+	<meta http-equiv="Cache-control" content="no-cache, must-revalidate">
 	<meta http-equiv="Cache" content="no-cache">
 	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
 	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />

+ 4 - 4
src/main/webapp/WEB-INF/views/normal/schedularList.html

@@ -11,10 +11,10 @@
 	<meta name="baidu-site-verification" content="tamBdrxeYx" />
 	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 	<meta http-equiv="X-UA-Compatible" content="IE=8">
-	<meta http-equiv="Expires" content="0">
-	<meta http-equiv="Pragma" content="no-cache">
-	<meta http-equiv="Cache-control" content="no-cache">
-	<meta http-equiv="Cache" content="no-cache">
+    <meta http-equiv="Expires" content="0">
+    <meta http-equiv="Pragma" content="no-cache">
+    <meta http-equiv="Cache-control" content="no-cache, must-revalidate">
+    <meta http-equiv="Cache" content="no-cache">
 	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
 	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
 	<link rel="stylesheet"