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 @@