wangmh 7 роки тому
батько
коміт
01aeeec489

+ 20 - 8
sso-server/src/main/java/com/uas/sso/controller/LoginController.java

@@ -19,6 +19,8 @@ import com.uas.sso.util.*;
 import com.uas.sso.web.waf.request.WafRequestWrapper;
 import com.uas.sso.foreign.weixin.entity.OAuthInfo;
 import com.uas.sso.foreign.weixin.service.WeChatService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.Assert;
@@ -84,9 +86,13 @@ public class LoginController extends BaseController {
     @Autowired
     private BiHeService biHeService;
 
+    private static Logger logger = LoggerFactory.getLogger(LoginController.class);
+
     @RequestMapping(method = RequestMethod.POST)
     public ModelMap login() {
         // 获取登录信息
+        Long start = System.currentTimeMillis();
+        request.getSession().setAttribute("time", start);
         WafRequestWrapper wr = new WafRequestWrapper(request);
         String appId = wr.getParameter("appId");
         String spaceUU = wr.getParameter("spaceUU");
@@ -120,7 +126,7 @@ public class LoginController extends BaseController {
         if (StringUtils.isEmpty(returnUrl)) {
             returnUrl = HOME_PAGE;
         }
-
+        logger.info(start + " 1获取登录信息:" + (System.currentTimeMillis() - start));
         // 获取用户基本信息
         User user = userService.findByUsername(username);
         if (user == null) {
@@ -149,6 +155,7 @@ public class LoginController extends BaseController {
             pwdErrorCount = inputErrorPwd(user.getUserUU());
             return error("您输入的账号或密码有误").addAttribute("errorCount", pwdErrorCount);
         }
+        logger.info(start + " 2校验密码:" + (System.currentTimeMillis() - start));
 
         // 校验密码强度,如果和存储的不同,则保存
         int strength = PasswordLevelUtils.checkPasswordLevel(password).getValue();
@@ -156,6 +163,7 @@ public class LoginController extends BaseController {
             user.setPasswordLevel(strength);
             userService.save(user);
         }
+        logger.info(start + " 3校验密码强度:" + (System.currentTimeMillis() - start));
         return success(login(user.getUserUU(), appId, spaceUU, returnUrl));
     }
 
@@ -390,23 +398,27 @@ public class LoginController extends BaseController {
          * 设置登录 Cookie 最后一个参数 true 时添加 cookie 同时销毁当前 JSESSIONID
          * 创建信任的 JSESSIONID
          */
-        UserRecord userRecord = userRecordService.findOne(userAccount.getUserUU());
-        userAccount.setLastLoginTime(Optional.ofNullable(userRecord).map(UserRecord::getLastLoginTime).orElse(null));
+        long start = (long) request.getSession().getAttribute("time");
+        logger.info(start + " 4选择登录账套:" + (System.currentTimeMillis() - start));
+        // 设置登录时间,并将密码输错次数设为0
+        UserRecord userRecord = new UserRecord(userAccount.getUserUU());
+        userRecord.setLastLoginTime(System.currentTimeMillis());
+        userService.save(userRecord);
+        userAccount.setLastLoginTime(userRecord.getLastLoginTime());
+        logger.info(start + " 5设置上次登录时间:" + (System.currentTimeMillis() - start));
+
         String baseUrl = (String) request.getSession().getAttribute("baseUrl");
         baseUrl = HttpUtil.decodeURL(baseUrl);
         SSOToken st = new SSOToken(request, userAccount.getMobile());
         st.setData(JSON.toJSONString(userAccount));
         SSOHelper.setSSOCookie(request, response, st, true);
-
-        // 设置登录时间,并将密码输错次数设为0,为空则不设置
-        userRecord = new UserRecord(userAccount.getUserUU());
-        userRecord.setLastLoginTime(System.currentTimeMillis());
-        userService.save(userRecord);
+        logger.info(start + " 6设置cookie:" + (System.currentTimeMillis() - start));
 
         // 设置返回值,通知各个应用用户已经登录
         ModelMap data = new ModelMap();
         data = addOtherAppRequestData(userAccount, data, baseUrl, isLoginAll);
         data.put("returnUrl", HttpUtil.decodeURL(returnUrl));
+        logger.info(start + " 7设置返回值:" + (System.currentTimeMillis() - start));
         return data;
     }