新增页面

有登陆过滤器
正式上线1.0
This commit is contained in:
2020-05-04 03:26:52 +08:00
parent 6cb1c0f9eb
commit 6627f00d3e
41 changed files with 6561 additions and 129 deletions

View File

@@ -0,0 +1,52 @@
package com.yutou.tools.utils;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class AESTools {
private static final String key="fJjSoOM7tDIQN0Ne";
private static final String model="AES/ECB/PKCS5Padding";
/**
* 加密
* @param value 原文
* @return 密文
*/
public static String encrypt(String value){
try {
KeyGenerator generator=KeyGenerator.getInstance("AES");
generator.init(128);
Cipher cipher=Cipher.getInstance(model);
cipher.init(Cipher.ENCRYPT_MODE,new SecretKeySpec(key.getBytes(),"AES"));
byte[] bytes=cipher.doFinal(value.getBytes(StandardCharsets.UTF_8));
return new String(Base64.getEncoder().encode(bytes));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 解密
* @param value 密文
* @return 原文
*/
public static String decrypt(String value){
try {
KeyGenerator generator=KeyGenerator.getInstance("AES");
generator.init(128);
Cipher cipher=Cipher.getInstance(model);
cipher.init(Cipher.DECRYPT_MODE,new SecretKeySpec(key.getBytes(),"AES"));
byte[] encodeBytes=Base64.getDecoder().decode(value);
byte[] bytes=cipher.doFinal(encodeBytes);
return new String(bytes);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -1,11 +1,14 @@
package com.yutou.tools.utils;
import com.yutou.tools.mybatis.dao.UKeyDao;
import com.yutou.tools.mybatis.model.UKeyExample;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -18,19 +21,39 @@ public class APIFilter implements Filter {
UKeyDao keyDao;
@Resource
RedisTools redisTools;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request= (HttpServletRequest) servletRequest;
String token=request.getParameter("token");
System.out.println("接收到请求:"+request.getRequestURI()+" "+token);
if(token==null&&redisTools.get(request.getSession().getId())==null&&!request.getRequestURI().equals("/")){
System.out.println("请求无令牌,拦截");
//((HttpServletResponse)servletResponse).sendRedirect("/");
//return;
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response= (HttpServletResponse) servletResponse;
String token = request.getParameter("token");
Cookie cookie = Tools.getCookie(request, "user");
System.out.println("接收到请求:" + request.getRequestURI() + " " + token);
boolean isToken = false;
boolean isCookie = false;
if (!StringUtils.isEmpty(token)) {
UKeyExample example = new UKeyExample();
example.createCriteria().andKeyEqualTo(token);
if (keyDao.selectByExample(example).size() > 0) {
isToken = true;
}
}
if (token==null||keyDao.selectByKey(token)==null) {
if (cookie != null) {
if ("ok".equals(redisTools.get(cookie.getValue()))) {
isCookie = true;
}
}
if (!isToken) {
System.out.println("token验证不通过:" + token);
//return;
} else if (!isCookie) {
System.out.println("请求无令牌,拦截");
}
if (!isCookie && !isToken) {
//response.sendRedirect("/");
if(!request.getRequestURI().contains("/login/")){
response.sendRedirect("/");
return;
}
}
filterChain.doFilter(servletRequest, servletResponse);
}

View File

@@ -6,18 +6,28 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Component
public class RedisTools {
@Resource
RedisTemplate<String,String> redisTemplate;
public void set(String key,String value){
redisTemplate.opsForValue().set(key,value);
RedisTemplate<String, String> redisTemplate;
public void set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
public void set(String key,String value,long time){
redisTemplate.opsForValue().set(key, value, time);
public void set(String key, String value, long time) {
System.out.println("key=" + key + " value=" + value + " time=" + time);
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}
public String get(String key){
return redisTemplate.opsForValue().get(key);
public String get(String key) {
try {
return redisTemplate.opsForValue().get(key);
} catch (Exception e) {
return null;
}
}
}

View File

@@ -25,26 +25,9 @@ public class Tools {
if(time!=-1) {
cookie.setMaxAge(time);
}
cookie.setPath("/");
response.addCookie(cookie);
}
/**
* 设置Cookie
* @param request
* @param response
* @param key
* @param time 生命周期为0时即为删除
* @return
*/
private static String setCookie(HttpServletRequest request, HttpServletResponse response, String key,int time) {
Cookie name = new Cookie("uname", key);
Cookie session = new Cookie("session", request.getSession().getId());
if(time!=-1) {
name.setMaxAge(time);
session.setMaxAge(time);
}
response.addCookie(name);
response.addCookie(session);
return request.getSession().getId();
}
/**
* 获取Cookie
@@ -54,11 +37,16 @@ public class Tools {
*/
public static Cookie getCookie(HttpServletRequest request,String key) {
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (key!=null&&cookie.getName().equals(key)) {
return cookie;
try {
for (Cookie cookie : cookies) {
if (key!=null&&cookie.getName().equals(key)) {
return cookie;
}
}
}catch (Exception ignored){
}
return null;
}
/**
@@ -69,18 +57,27 @@ public class Tools {
* @return
*/
public static String deleteCookie(HttpServletRequest request, HttpServletResponse response, String key) {
return setCookie(request, response, key, 0);
for (Cookie cookie : request.getCookies()) {
if(cookie.getName().equals(key)) {
System.out.println("删除key="+key);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setValue(null);
response.addCookie(cookie);
}
}
return "ok";
}
public static void sendServer(String title,String msg){
try{
System.out.println("title="+title+" msg="+msg);
/*HttpURLConnection connection= (HttpURLConnection) new URL("https://sc.ftqq.com/SCU64034T5adf5c5940dcecc016e0e9d0cf9b1e725da126ff47475.send?text="
HttpURLConnection connection= (HttpURLConnection) new URL("https://sc.ftqq.com/SCU64034T5adf5c5940dcecc016e0e9d0cf9b1e725da126ff47475.send?text="
+ URLEncoder.encode(title,"UTF-8")+"&desp="+URLEncoder.encode(msg,"UTF-8")).openConnection();
connection.connect();
InputStream inputStream=connection.getInputStream();
int i=inputStream.read();
inputStream.close();
connection.disconnect();*/
connection.disconnect();
}catch (Exception e){
e.printStackTrace();
}