Przeglądaj źródła

更新用户登录信息保存方法

hejq 7 lat temu
rodzic
commit
9590a2e586

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

@@ -66,16 +66,8 @@ public class AccountController extends BaseController {
 	@RequestMapping(value = "/logout", method = RequestMethod.POST)
 	public ModelMap logout() throws IOException {
 		SystemSession.clear();
-        if (request.getCookies() != null) {
-            for (Cookie cookie : request.getCookies()) {
-                if (cookie.getName().equals("user")) {
-                    cookie.setMaxAge(0);
-                    cookie.setValue("");
-                    cookie.setPath("/");
-                    response.addCookie(cookie);
-                }
-            }
-        }
+        request.getSession().setAttribute("user", null);
+        request.getSession().setAttribute("ipAddress", null);
         useLogService.appendLog(UseType.LOGOUT.code(), null, AgentUtils.getIp(request));
 		return success();
 	}

+ 2 - 4
src/main/java/com/uas/platform/b2bManage/service/impl/UserServiceImpl.java

@@ -22,7 +22,6 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 
 import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -104,10 +103,9 @@ public class UserServiceImpl implements UserService {
         }
         User user = users.get(0);
         if (Md5Utils.encode(passWord, user.getName()).equals(user.getPassword())) {
-            user.setIp(AgentUtils.getIp(request));
             SystemSession.setUser(user);
-            response.setHeader("Set-Cookie", "Secure; HttpOnly");
-            response.setHeader("Set-Cookie", "user=" + URLEncoder.encode(JSON.toJSONString(user), String.valueOf(StandardCharsets.UTF_8)));
+            request.getSession().setAttribute("user", user);
+            request.getSession().setAttribute("ipAddress", AgentUtils.getIp(request));
         } else {
             throw new IllegalAccessException("账号或密码错误");
         }

+ 8 - 45
src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java

@@ -1,10 +1,10 @@
 package com.uas.platform.b2bManage.web.filter;
 
-import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2bManage.core.support.SystemSession;
 import com.uas.platform.b2bManage.model.User;
 import com.uas.platform.b2bManage.service.UserService;
 import com.uas.platform.b2bManage.support.SecurityConstant;
+import com.uas.platform.core.util.AgentUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
@@ -16,13 +16,10 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
-import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
 
 
 /**
@@ -48,7 +45,7 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
     }
 
     private final boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        HttpServletRequest httpRequest = (HttpServletRequest) request;
+        HttpServletRequest httpRequest = request;
         logSession(httpRequest);
         User user = SystemSession.getUser();
         // 未登录则要求登录
@@ -60,7 +57,7 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
                 return true;
             }
         } else {
-            onAuthenticateSuccess(request, response);
+            onAuthenticateSuccess(request);
         }
         return true;
     }
@@ -71,19 +68,10 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
      * @param request
      */
     private void logSession(HttpServletRequest request) throws UnsupportedEncodingException {
-        //这样便可以获取一个cookie数组
-        Cookie[] cookies = request.getCookies();
-        if (!StringUtils.isEmpty(cookies)) {
-            for (Cookie cookie : cookies){
-                if (null != cookie && cookie.getName().equals("user")) {
-                    Object jsonStr = cookie.getValue();
-                    if (jsonStr != null) {
-                        String str = URLDecoder.decode(jsonStr.toString(), String.valueOf(StandardCharsets.UTF_8));
-                        User user = JSONObject.parseObject(str, User.class);
-                        SystemSession.setUser(user);
-                    }
-                }
-            }
+        Object user = request.getSession().getAttribute("user");
+        Object ip = request.getSession().getAttribute("ipAddress");
+        if (user != null && AgentUtils.getIp(request).equals(ip)) {
+            SystemSession.setUser((User) user);
         }
     }
 
@@ -94,38 +82,13 @@ public class SSOInterceptor extends HandlerInterceptorAdapter {
         SystemSession.clear();
     }
 
-    protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
+    protected void onAuthenticateSuccess(HttpServletRequest request) {
         User user = (User) request.getAttribute("user");
-        SSOToken token = SSOHelper.attrToken(request);
-        // cookie变化的情况下,session可能还未变化
-        if (user == null) {
-            user = getUserByToken(token);
-            if (user != null) {
-                request.setAttribute("user", user);
-            }
-        }
         if (user != null) {
             SystemSession.setUser(user);
         }
     }
 
-    private User getUserByToken(SSOToken token) {
-        User authedUser = null;
-        if (null != token && null != token.getData()) {
-            User tokenUser = FlexJsonUtils.fromJson(token.getData(), User.class);
-            if (!StringUtils.isEmpty(tokenUser.getTel())) {
-                // UID表示所有系统公认的唯一标识,这里统一使用手机号
-                authedUser = userService.findByTel(tokenUser.getTel());
-            } else if (!StringUtils.isEmpty(tokenUser.getEmail())) {
-                // UID表示所有系统公认的唯一标识,这里统一使用手机号
-                authedUser = userService.findUserByUserEmail(tokenUser.getEmail());
-            } else {
-                log.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getName()));
-            }
-        }
-        return authedUser;
-    }
-
     private boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) throws IOException {
         SystemSession.clear();
         User user = (User) request.getSession().getAttribute("user");