From e0fe92fa24a1811b3cc983688632d118629d42b7 Mon Sep 17 00:00:00 2001 From: linjj <850658129@qq.com> Date: Mon, 8 Apr 2024 14:21:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86=E6=97=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/manage/controller/FontController.java | 8 +- .../manage/controller/LoginController.java | 61 +++++- .../com/manage/controller/PageController.java | 6 + .../webapp/WEB-INF/views/userDir/user.jsp | 180 +++++++++++------- .../src/main/webapp/static/js/login.js | 4 +- .../main/webapp/static/js/updatePassword.js | 1 + power-admin/src/main/webapp/static/js/user.js | 19 +- .../java/com/manage/entity/Power_User.java | 10 + .../main/java/com/manage/vo/Power_UserVo.java | 10 + .../resources/mapper/Power_UserMapper.xml | 8 +- .../src/main/java/com/manage/util/Msg.java | 8 + 11 files changed, 224 insertions(+), 91 deletions(-) diff --git a/power-admin/src/main/java/com/manage/controller/FontController.java b/power-admin/src/main/java/com/manage/controller/FontController.java index a291bf1..5c30e0e 100644 --- a/power-admin/src/main/java/com/manage/controller/FontController.java +++ b/power-admin/src/main/java/com/manage/controller/FontController.java @@ -70,10 +70,10 @@ public class FontController { @Autowired private Power_DeptMapper powerDeptMapper; - @RequestMapping(value = "updatePassword") - public String updatePassword(Model model , HttpServletRequest request){ - return"/userDir/updatePassword1"; - } +// @RequestMapping(value = "updatePassword") +// public String updatePassword(Model model , HttpServletRequest request){ +// return"/userDir/updatePassword1"; +// } @RequestMapping(value = "updatePass") diff --git a/power-admin/src/main/java/com/manage/controller/LoginController.java b/power-admin/src/main/java/com/manage/controller/LoginController.java index e203d7a..e113ae6 100644 --- a/power-admin/src/main/java/com/manage/controller/LoginController.java +++ b/power-admin/src/main/java/com/manage/controller/LoginController.java @@ -26,6 +26,8 @@ import redis.clients.jedis.Jedis; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.*; @@ -154,12 +156,20 @@ public class LoginController { ActionScopeUtils.setSessionAttribute("CURRENT_USER", user, Integer.valueOf(String.valueOf(TOKEN_EXPIRE_TIME)) / 1000); String reg = "^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z\\W]+$)(?![a-z\\d]+$)(?![a-z\\W]+$)(?![\\d\\W]+$)\\S{8,20}$"; boolean msg = userPwd.matches(reg); + //判断是否存在ip限制 + if (StringUtils.isNotBlank(user.getIp())){ + //获取登录当前ip + String ipAddress = getAddressIp(request); + //将逗号隔开ip转为list + List ips= Arrays.asList(user.getIp().split(",")); + if (!loop(ips, ipAddress)){ + return Msg.loginFail("当前用户不在允许登录ip,无法登录"); + } + } if (msg == false) { - String url = "http://" + SERVER_IP + ":" + SERVER_PORT + "/power" + "/font/updatePassword"; - return Msg.success().add("url", url); + return Msg.success().add("url", "updatePassword"); } else { - String url = "http://" + SERVER_IP + ":" + SERVER_PORT + "/power/gatewayPage"; - return Msg.success().add("url", url); + return Msg.success().add("url", "gatewayPage"); } } else { //登录失败 @@ -201,6 +211,49 @@ public class LoginController { } + //判断list中是否包含某元素 + public static boolean loop(List list, String value) { + for (String str : list) { + if (Objects.equals(str, value)) { + return true; + } + } + return false; + } + + private String getAddressIp( HttpServletRequest request){ + // 获取访问真实IP + String ipAddress = request.getHeader("x-forwarded-for"); + if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){ + //根据网卡取本机配置的IP + InetAddress inet=null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress= inet.getHostAddress(); + } + } + //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15 + if(ipAddress.indexOf(",")>0){ + ipAddress = ipAddress.substring(0,ipAddress.indexOf(",")); + } + } + return ipAddress; + } + + + //获取session所剩时间 @RequestMapping(value = "getSessionRemainingTime", method = RequestMethod.GET, produces = {"text/json;charset=UTF-8"}) @ResponseBody diff --git a/power-admin/src/main/java/com/manage/controller/PageController.java b/power-admin/src/main/java/com/manage/controller/PageController.java index 27a1b76..ff20caa 100644 --- a/power-admin/src/main/java/com/manage/controller/PageController.java +++ b/power-admin/src/main/java/com/manage/controller/PageController.java @@ -78,6 +78,12 @@ public class PageController { } return "redirect:login"; } + + + @RequestMapping(value = "updatePassword") + public String updatePassword(Model model , HttpServletRequest request){ + return"/userDir/updatePassword1"; + } @RequestMapping(value = "index") public String index(Model model,HttpServletRequest request){ model.addAttribute("WEBSOCKET_URLHEAD",WEBSOCKET_URLHEAD); diff --git a/power-admin/src/main/webapp/WEB-INF/views/userDir/user.jsp b/power-admin/src/main/webapp/WEB-INF/views/userDir/user.jsp index 52f3466..f2302c9 100644 --- a/power-admin/src/main/webapp/WEB-INF/views/userDir/user.jsp +++ b/power-admin/src/main/webapp/WEB-INF/views/userDir/user.jsp @@ -13,82 +13,102 @@