Browse Source

添加 SSO登陆日志

wangdy 7 years ago
parent
commit
42063d4092

+ 24 - 1
src/main/java/com/uas/platform/b2c/common/account/controller/AuthenticationController.java

@@ -8,7 +8,12 @@ import com.uas.platform.b2c.common.account.service.RoleService;
 import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import com.uas.sso.entity.UserAccount;
 import net.sf.ehcache.CacheManager;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.repository.query.Param;
 import org.springframework.http.HttpStatus;
@@ -18,6 +23,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.List;
@@ -29,6 +35,9 @@ import java.util.List;
 @RequestMapping("/user/authentication")
 public class AuthenticationController {
 
+
+	private static final Logger logger = Logger.getLogger(AuthenticationController.class);
+
 	@Autowired
 	private UserService userService;
 
@@ -93,10 +102,24 @@ public class AuthenticationController {
 	 */
 	@RequestMapping(value = "/{enUU}")
 	@ResponseBody
-	public void switchEnterprise(@PathVariable("enUU") long enUU, HttpServletRequest request) {
+	public void switchEnterprise(@PathVariable("enUU") long enUU, HttpServletRequest request, HttpServletResponse response) {
 		userService.saveLoginTime(enUU);
 		User user = userService.switchEnterprise(enUU);
 		request.getSession().setAttribute("user", user);
+
+		SSOToken token = (SSOToken)SSOHelper.getToken(request);
+		logger.info(String.format("切换账套,用户:%s,获取用户信息成功,手机号:%s", user.getUserName(), token.getUid()));
+		UserAccount tokenUser = FlexJsonUtils.fromJson(token.getData(), UserAccount.class);
+		if (enUU == 0L) {
+			tokenUser.setSpaceUU(null);
+			tokenUser.setBusinessCode(null);
+			tokenUser.setSpaceName(null);
+		} else {
+			tokenUser.setSpaceUU(enUU);
+		}
+		token.setData(FlexJsonUtils.toJson(tokenUser));
+		// 设置cookie
+		SSOHelper.setSSOCookie(request, response, token, true);
 	}
 
 	/**

+ 3 - 0
src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java

@@ -156,12 +156,15 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
     protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
         User user = (User) request.getSession().getAttribute("user");
         SSOToken token = SSOHelper.attrToken(request);
+        logger.info(String.format("用户:%s,获取用户信息成功,手机号:%s", user.getUserName(), token.getUid()));
         // cookie变化的情况下,session可能还未变化
         if (user == null || (user.getUserTel() != null && !token.getUid().equals(user.getUserTel()))) {
             user = getUserByToken(token);
             if (user != null) {
                 user.setIp(AgentUtils.getIp(request));
                 request.getSession().setAttribute("user", user);
+            } else {
+                logger.error(String.format("用户获取用户信息失败,uid:%s", token.getUid()));
             }
         }
         setGrantedAuthorities(user);