Browse Source

登录时获取IP

lighter 1 year ago
parent
commit
b4d540ca53

+ 5 - 4
src/main/java/thyyxxk/webserver/controller/LoginController.java

@@ -10,6 +10,7 @@ import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.service.LoginService;
 
 import javax.print.DocFlavor;
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -28,14 +29,14 @@ public class LoginController {
 
     @PassToken
     @PostMapping("/login")
-    public ResultVo<UserInfo> login(@RequestBody UserInfo userInfo) {
-        return service.login(userInfo, true);
+    public ResultVo<UserInfo> login(@RequestBody UserInfo userInfo, HttpServletRequest request) {
+        return service.login(userInfo, request, true);
     }
 
     @PassToken
     @GetMapping("/simpleLogin")
-    public ResultVo<JSONObject> simpleLogin(@RequestParam("code") String code) {
-        return service.simpleLogin(code);
+    public ResultVo<JSONObject> simpleLogin(@RequestParam("code") String code, HttpServletRequest request) {
+        return service.simpleLogin(code, request);
     }
 
     @GetMapping("/getWards")

+ 1 - 0
src/main/java/thyyxxk/webserver/entity/login/UserInfo.java

@@ -52,6 +52,7 @@ public class UserInfo {
     private String avatar;
     private String token;
     private String sid;
+    private String ip;
 
     /**
      * 医保编码

+ 12 - 17
src/main/java/thyyxxk/webserver/service/LoginService.java

@@ -60,7 +60,7 @@ public class LoginService {
         private String newPwd;
     }
 
-    public ResultVo<UserInfo> login(UserInfo userInfo, boolean encrypt) {
+    public ResultVo<UserInfo> login(UserInfo userInfo, HttpServletRequest request, boolean encrypt) {
         UserInfo tempUserInfo = dao.findUserByCodeRsFromDjUserBase(userInfo.getCodeRs());
         if (null == tempUserInfo) {
             tempUserInfo = dao.findUserByCodeRsFromEmployeeMi(userInfo.getCodeRs());
@@ -81,9 +81,11 @@ public class LoginService {
             tempUserInfo.setAvatar(json.getString("avatar"));
         } catch (Exception ignored) {
         }
+        String ip = IpAddressUtil.getIPAddress(request);
         tempUserInfo = redisLikeService.dbUserInfo(tempUserInfo.getCode());
         tempUserInfo.setToken(token);
-        tempUserInfo.setSid(makeSid(tempUserInfo.getCode(), token, userInfo.getSid()));
+        tempUserInfo.setIp(ip);
+        tempUserInfo.setSid(makeSid(tempUserInfo.getCode(), userInfo.getSid(), ip));
         redisLikeService.setUserInfo(tempUserInfo);
 
         return ResultVoUtil.success(tempUserInfo);
@@ -117,13 +119,13 @@ public class LoginService {
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "验证码过期或者验证码错误。");
     }
 
-    public ResultVo<JSONObject> simpleLogin(String code) {
+    public ResultVo<JSONObject> simpleLogin(String code, HttpServletRequest request) {
         UserInfo us = dao.getUserInfoByCode(code);
         if (us == null) {
             return ResultVoUtil.fail(ExceptionEnum.NOT_EL_MESSAGE, "用户不存在");
         }
         JSONObject js = new JSONObject();
-        ResultVo<UserInfo> userInfoResultVo = login(us, false);
+        ResultVo<UserInfo> userInfoResultVo = login(us, request, false);
         if (userInfoResultVo.getCode() == 200) {
             js.put("userInfo", userInfoResultVo.getData());
         } else {
@@ -165,21 +167,14 @@ public class LoginService {
         }
     }
 
-    private String makeSid(String code, String token, String sid) {
-        String tempToken = token.replaceAll("\\.", "").replaceAll("_", "").replaceAll("-", "");
-        String flakeIdSub = "-" + SnowFlakeId.instance().nextId() + "-";
-        int random = new Random().nextInt(80);
-        String tokenSub = tempToken.substring(random, random + 18);
+    private String makeSid(String code, String sid, String ip) {
+        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
         if (StringUtil.notBlank(sid) && "fromTriageScreen".equals(sid)) {
-            tokenSub += "-triageFloorScreen";
+            uuid += "-triageFloorScreen";
+        } else {
+            uuid = "-" + ip + "-" + uuid;
         }
-        return code + flakeIdSub + tokenSub;
-    }
-
-
-    public void test() {
-
-
+        return code + uuid;
     }
 
 }