From b2b1900c809f66fdc3b0395ce00c582194c5df1f Mon Sep 17 00:00:00 2001
From: xuxin <840198532@qq.com>
Date: Sun, 7 Dec 2025 11:33:54 +0800
Subject: [PATCH] =?UTF-8?q?tlias=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F--?=
=?UTF-8?q?=E7=99=BB=E5=BD=95=E6=A0=A1=E9=AA=8C--=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8Filter=E5=AE=9E=E7=8E=B0=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E6=A0=A1=E9=AA=8C=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
tlias-web-management/pom.xml | 8 +++
.../java/com/inmind/filter/DemoFilter.java | 6 +-
.../com/inmind/filter/LoginCheckFilter.java | 67 +++++++++++++++++++
.../java/com/inmind/filter/XbcFilter.java | 16 +++++
4 files changed, 96 insertions(+), 1 deletion(-)
create mode 100644 tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java
create mode 100644 tlias-web-management/src/main/java/com/inmind/filter/XbcFilter.java
diff --git a/tlias-web-management/pom.xml b/tlias-web-management/pom.xml
index 239c30c..56ab9f4 100644
--- a/tlias-web-management/pom.xml
+++ b/tlias-web-management/pom.xml
@@ -75,6 +75,14 @@
jjwt
0.9.1
+
+
+
+ com.alibaba
+ fastjson
+ 2.0.53
+
+
diff --git a/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java
index cf38863..20c8117 100644
--- a/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java
+++ b/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java
@@ -4,7 +4,9 @@ import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
-@WebFilter(urlPatterns = "/*")
+//@WebFilter(urlPatterns = "/*")
+//@WebFilter(urlPatterns = "/login")
+//@WebFilter(urlPatterns = "/emps/*")
public class DemoFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
@@ -15,8 +17,10 @@ public class DemoFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("doFilter,过滤器的拦截方法执行了");
+ System.out.println("DemoFilter---放行前的逻辑");
//放行
filterChain.doFilter(request,response);
+ System.out.println("DemoFilter---放行后的逻辑");
}
@Override
diff --git a/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java
new file mode 100644
index 0000000..18047e5
--- /dev/null
+++ b/tlias-web-management/src/main/java/com/inmind/filter/LoginCheckFilter.java
@@ -0,0 +1,67 @@
+package com.inmind.filter;
+
+import com.alibaba.fastjson.JSONObject;
+import com.inmind.pojo.Result;
+import com.inmind.utils.JwtUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.StringUtils;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@WebFilter(urlPatterns = "/*")//登录校验过滤器,拦截所有的资源请求
+@Slf4j
+public class LoginCheckFilter implements Filter {
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+
+ //1.获取请求url(之前都是通过HttpServletRequest获取请求)
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+ String url = request.getRequestURI();//http://localhost:8080/login或者http://localhost:8080/emps
+ log.info("请求url:"+url);
+ //2.判断请求url中是否有login,如果包含那就是登录接口,直接放行
+ if (url.contains("login")) {
+ log.info("当前是登录请求,直接放行");
+ filterChain.doFilter(servletRequest,servletResponse);
+ return;//放行后会回到当前代码中,所以要直接提前结束方法功能,否则下面的业务逻辑还会执行
+ }
+ //3.如果不是登录操作,获取请求头中的令牌
+ String jwt = request.getHeader("token");
+
+ //4.判断令牌是否存在
+ if (!StringUtils.hasLength(jwt)) {
+ log.info("令牌不存在,直接响应未登录状态");
+ // 未登录的响应实现
+ notLogin(response);
+ return;
+ }
+
+ //5.判断令牌的合法性,如果不合法则,响应未登录状态
+ try {
+ JwtUtils.parseJWT(jwt);
+ } catch (Exception e) {
+ //未登录的响应实现
+ notLogin(response);
+ return;
+ }
+
+ //放行
+ filterChain.doFilter(servletRequest,servletResponse);
+ return;
+ }
+
+ private void notLogin(HttpServletResponse response) throws IOException {
+ //根据接口文档响应json,之前通过spring的控制器的@ResponseBody注解自动转换为json返回
+ //但是当前不是控制器,所以我们要手动封装json数据响应
+ Result error = Result.error("NOT_LOGIN");
+ //手动将java对象转为json字符串----阿里巴巴fastJson
+ String notLoginJson = JSONObject.toJSONString(error);
+ //响应数据通过响应对象,直接返回给浏览器(客户端)
+ response.getWriter().write(notLoginJson);
+ return;
+ }
+}
diff --git a/tlias-web-management/src/main/java/com/inmind/filter/XbcFilter.java b/tlias-web-management/src/main/java/com/inmind/filter/XbcFilter.java
new file mode 100644
index 0000000..bef45ff
--- /dev/null
+++ b/tlias-web-management/src/main/java/com/inmind/filter/XbcFilter.java
@@ -0,0 +1,16 @@
+package com.inmind.filter;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import java.io.IOException;
+
+//@WebFilter(urlPatterns = "/*")
+public class XbcFilter implements Filter {
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
+ System.out.println("XbcFilter -- 放行前的逻辑");
+ //放行
+ filterChain.doFilter(request,response);
+ System.out.println("XbcFilter --- 放行后的逻辑");
+ }
+}