package com.yutou.tools.web; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yutou.tools.utils.RedisTools; import com.yutou.tools.utils.Tools; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Objects; import java.util.UUID; @Controller public class userController { @RequestMapping("/login/check.do") @ResponseBody public String getLoginState(HttpServletRequest request) { JSONObject json = new JSONObject(); json.put("code", -1); json.put("msg", "未登录"); JSONArray array = new JSONArray(); if (RedisTools.get("ban") != null) { array = JSONArray.parseArray(RedisTools.get("ban")); } if (array.contains(Tools.getRemoteAddress(request))) { json.put("code", -2); json.put("msg", "未登录"); System.out.println("IP已被封禁"); return json.toJSONString(); } Cookie cookie = Tools.getCookie(request, "user"); if (cookie == null) { return json.toJSONString(); } if ("ok".equals(RedisTools.get(cookie.getValue()))) { json.put("code", 0); json.put("msg", "登录成功"); return json.toJSONString(); } json.put("code", -1); json.put("msg", "未登录"); return json.toJSONString(); } @RequestMapping("/login/sendCaptcha.do") @ResponseBody public String captcha(HttpServletRequest request) { JSONArray array = new JSONArray(); if (RedisTools.get("ban") != null) { array = JSONArray.parseArray(RedisTools.get("ban")); } if (array.contains(Tools.getRemoteAddress(request))) { System.out.println("IP已被封禁"); return "ERROR!"; } int[] captcha = Tools.randomCommon(0, 9, 6); String cc = ""; for (int value : captcha) { cc += value; } RedisTools.set("login", cc, 5 * 60 * 1000); String token=UUID.randomUUID().toString().replace("-",""); RedisTools.set(token,Tools.getRemoteAddress(request),10 * 60 * 1000); String url="http://tools.yutou233.cn/login/ban.do?token="+token; Tools.sendServer("管理后台登录验证码", "本次登录验证码为:" + cc + ",登录IP:" + Tools.getRemoteAddress(request) + ",非正常登录,封禁IP:"+url); return "ok"; } @RequestMapping("/login/ban.do") @ResponseBody public String banIp(String token){ String ip=RedisTools.get(token); if(ip!=null){ JSONArray array = new JSONArray(); if (RedisTools.get("ban") != null) { array = JSONArray.parseArray(RedisTools.get("bean")); } array.add(ip); RedisTools.set("ban",array.toJSONString()); return "已封禁"; } return "ERROR"; } @RequestMapping(value = "/login/login.do", method = RequestMethod.POST) @ResponseBody public String login(HttpServletResponse response, String code) { JSONObject json = new JSONObject(); if (RedisTools.get("login").equals(code.trim())) { String uuid = UUID.randomUUID().toString(); Tools.setCookie(response, "user", uuid.replace("-", ""), 30 * 24 * 60 * 60); RedisTools.set(uuid.replace("-", ""), "ok", 30 * 24 * 60 * 60); json.put("code", 0); json.put("msg", "登录成功"); return json.toJSONString(); } json.put("code", -2); json.put("msg", "登录安全码错误"); return json.toJSONString(); } @RequestMapping(value = "/login/logout.do", method = RequestMethod.POST) @ResponseBody public String logout(HttpServletRequest request, HttpServletResponse response) { JSONObject json = new JSONObject(); Cookie cookie = Tools.getCookie(request, "user"); json.put("code", -1); json.put("msg", "退出失败"); if (cookie != null) { if ("ok".equals(RedisTools.get(cookie.getValue()))) { RedisTools.set(cookie.getValue(), "ok", 1); Tools.deleteCookie(request, response, "user"); json.put("code", 0); json.put("msg", "退出成功"); } } return json.toJSONString(); } }