新增页面
有登陆过滤器 正式上线1.0
This commit is contained in:
52
src/main/java/com/yutou/tools/utils/AESTools.java
Normal file
52
src/main/java/com/yutou/tools/utils/AESTools.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user