|
@@ -1,87 +1,87 @@
|
|
|
-package com.fjhx.xmhjc.filter;
|
|
|
-
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
-import cn.hutool.extra.spring.SpringUtil;
|
|
|
-import com.fjhx.xmhjc.utils.NetUtils;
|
|
|
-import com.ruoyi.common.core.redis.RedisCache;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
-import org.springframework.util.AntPathMatcher;
|
|
|
-import org.springframework.util.PathMatcher;
|
|
|
-
|
|
|
-import javax.servlet.*;
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-
|
|
|
-/**
|
|
|
- * 浏览记录过滤器
|
|
|
- * @author hj
|
|
|
- * @date 2024年03月12日 9:47
|
|
|
- */
|
|
|
-@Component
|
|
|
-public class BrowsingFilter implements Filter {
|
|
|
- private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
|
|
-
|
|
|
- private static final String[] FILTER_URL = {"/open/**"};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
- Filter.super.init(filterConfig);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
|
|
- HttpServletRequest request = (HttpServletRequest) servletRequest;
|
|
|
- HttpServletResponse response = (HttpServletResponse) servletResponse;
|
|
|
- String requestUrl = request.getRequestURI();
|
|
|
-
|
|
|
- PathMatcher matcher = new AntPathMatcher();
|
|
|
- boolean match = false;
|
|
|
- for(String url : FILTER_URL){
|
|
|
- match = matcher.match(url, requestUrl);
|
|
|
- if (match){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- //在过滤范围内记录浏览记录
|
|
|
- if (match){
|
|
|
- String ip = NetUtils.getIpAddress(request);
|
|
|
- String key = "browsing:" + ip + ":" + DateUtil.today();
|
|
|
- //判断redis中是否存在key,存在则不记录
|
|
|
- if(validRedisKey(key)){
|
|
|
- filterChain.doFilter(servletRequest, servletResponse);
|
|
|
- return;
|
|
|
- }
|
|
|
- //不存在则记录
|
|
|
- redisCache.setCacheObject(key, key, 1, TimeUnit.DAYS);
|
|
|
- //TODO 记录浏览记录入库
|
|
|
- filterChain.doFilter(servletRequest, servletResponse);
|
|
|
- } else {
|
|
|
- filterChain.doFilter(servletRequest, servletResponse);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void destroy() {
|
|
|
- Filter.super.destroy();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 判断redis中是否存在key
|
|
|
- * @param key
|
|
|
- * @return true 存在 false 不存在
|
|
|
- */
|
|
|
- private synchronized boolean validRedisKey(String key){
|
|
|
- String cacheObject = redisCache.getCacheObject(key);
|
|
|
- if(StrUtil.isNotBlank(cacheObject)){
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-}
|
|
|
+//package com.fjhx.xmhjc.filter;
|
|
|
+//
|
|
|
+//import cn.hutool.core.date.DateUtil;
|
|
|
+//import cn.hutool.core.util.StrUtil;
|
|
|
+//import cn.hutool.extra.spring.SpringUtil;
|
|
|
+//import com.fjhx.xmhjc.utils.NetUtils;
|
|
|
+//import com.ruoyi.common.core.redis.RedisCache;
|
|
|
+//import org.springframework.stereotype.Component;
|
|
|
+//import org.springframework.util.AntPathMatcher;
|
|
|
+//import org.springframework.util.PathMatcher;
|
|
|
+//
|
|
|
+//import javax.servlet.*;
|
|
|
+//import javax.servlet.http.HttpServletRequest;
|
|
|
+//import javax.servlet.http.HttpServletResponse;
|
|
|
+//import java.io.IOException;
|
|
|
+//import java.util.concurrent.TimeUnit;
|
|
|
+//
|
|
|
+///**
|
|
|
+// * 浏览记录过滤器
|
|
|
+// * @author hj
|
|
|
+// * @date 2024年03月12日 9:47
|
|
|
+// */
|
|
|
+//@Component
|
|
|
+//public class BrowsingFilter implements Filter {
|
|
|
+// private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
|
|
+//
|
|
|
+// private static final String[] FILTER_URL = {"/open/**"};
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
+// Filter.super.init(filterConfig);
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
|
|
+// HttpServletRequest request = (HttpServletRequest) servletRequest;
|
|
|
+// HttpServletResponse response = (HttpServletResponse) servletResponse;
|
|
|
+// String requestUrl = request.getRequestURI();
|
|
|
+//
|
|
|
+// PathMatcher matcher = new AntPathMatcher();
|
|
|
+// boolean match = false;
|
|
|
+// for(String url : FILTER_URL){
|
|
|
+// match = matcher.match(url, requestUrl);
|
|
|
+// if (match){
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //在过滤范围内记录浏览记录
|
|
|
+// if (match){
|
|
|
+// String ip = NetUtils.getIpAddress(request);
|
|
|
+// String key = "browsing:" + ip + ":" + DateUtil.today();
|
|
|
+// //判断redis中是否存在key,存在则不记录
|
|
|
+// if(validRedisKey(key)){
|
|
|
+// filterChain.doFilter(servletRequest, servletResponse);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// //不存在则记录
|
|
|
+// redisCache.setCacheObject(key, key, 1, TimeUnit.DAYS);
|
|
|
+// //TODO 记录浏览记录入库
|
|
|
+// filterChain.doFilter(servletRequest, servletResponse);
|
|
|
+// } else {
|
|
|
+// filterChain.doFilter(servletRequest, servletResponse);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void destroy() {
|
|
|
+// Filter.super.destroy();
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 判断redis中是否存在key
|
|
|
+// * @param key
|
|
|
+// * @return true 存在 false 不存在
|
|
|
+// */
|
|
|
+// private synchronized boolean validRedisKey(String key){
|
|
|
+// String cacheObject = redisCache.getCacheObject(key);
|
|
|
+// if(StrUtil.isNotBlank(cacheObject)){
|
|
|
+// return true;
|
|
|
+// }
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+//}
|