web_toolset/src/main/java/com/yutou/tools/web/userController.java

142 lines
5.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.io.IOException;
import java.io.PrintWriter;
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")
public void banIp(HttpServletResponse response, String token, String model) throws IOException {
String ip = RedisTools.get(token);
PrintWriter writer = response.getWriter();
if (ip != null && model != null && model.equals("yes")) {
JSONArray array = null;
if (RedisTools.get("ban") != null) {
array = JSONArray.parseArray(RedisTools.get("bean"));
}
if(array==null){
array=new JSONArray();
}
array.add(ip);
RedisTools.set("ban", array.toJSONString());
writer.write("已封禁");
} else {
String url = "http://tools.yutou233.cn/login/ban.do?token=" + token + "&model=yes";
String html = "<div><a href=" + url + ">click my is ban this IP :" + ip + "</a></div>";
writer.write(html);
}
writer.flush();
writer.close();
}
@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();
}
}