From b3b510fc617931f4ffc95ff27e63013152aea1e4 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 14 Oct 2025 15:38:47 +0800 Subject: [PATCH] =?UTF-8?q?tlias=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8Filter=E5=85=A5=E9=97=A8=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inmind/TliasWebManagementApplication.java | 2 + .../inmind/controller/LoginController.java | 17 ++++++- .../java/com/inmind/filter/DemoFilter.java | 31 +++++++++++++ .../main/java/com/inmind/utils/JwtUtils.java | 44 +++++++++++++++++++ 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java create mode 100644 tlias-web-management/src/main/java/com/inmind/utils/JwtUtils.java diff --git a/tlias-web-management/src/main/java/com/inmind/TliasWebManagementApplication.java b/tlias-web-management/src/main/java/com/inmind/TliasWebManagementApplication.java index 586e138..51080b5 100644 --- a/tlias-web-management/src/main/java/com/inmind/TliasWebManagementApplication.java +++ b/tlias-web-management/src/main/java/com/inmind/TliasWebManagementApplication.java @@ -2,7 +2,9 @@ package com.inmind; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +@ServletComponentScan//开启对servlet组件的支持 @SpringBootApplication public class TliasWebManagementApplication { diff --git a/tlias-web-management/src/main/java/com/inmind/controller/LoginController.java b/tlias-web-management/src/main/java/com/inmind/controller/LoginController.java index 84408d2..2254517 100644 --- a/tlias-web-management/src/main/java/com/inmind/controller/LoginController.java +++ b/tlias-web-management/src/main/java/com/inmind/controller/LoginController.java @@ -3,12 +3,16 @@ package com.inmind.controller; import com.inmind.pojo.Emp; import com.inmind.pojo.Result; import com.inmind.service.EmpService; +import com.inmind.utils.JwtUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; + @RestController @Slf4j public class LoginController { @@ -23,6 +27,17 @@ public class LoginController { log.info("登录操作:{}",emp); //调用员工业务层查询功能 Emp e = empService.getEmpByUserNameAndPassWord(emp); - return e != null?Result.success():Result.error("用户名或密码错误"); + //登录成功,生成令牌,下发令牌 + if (e != null) { + //生成令牌 + Map claims = new HashMap<>(); + claims.put("id", e.getId()); + claims.put("name", e.getName()); + claims.put("username", e.getUsername()); + String jwt = JwtUtils.generateJwt(claims); + return Result.success(jwt); + } + + return Result.error("用户名或密码错误"); } } 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 new file mode 100644 index 0000000..1339fdf --- /dev/null +++ b/tlias-web-management/src/main/java/com/inmind/filter/DemoFilter.java @@ -0,0 +1,31 @@ +package com.inmind.filter; + +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@Slf4j +@WebFilter(urlPatterns = "/*")//标识为过滤器组件,拦截所有请求 +public class DemoFilter implements Filter { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + Filter.super.init(filterConfig); + log.info("init方法,过滤器的初始化方法执行了"); + } + + //拦截到请求之后,调用多次 + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + log.info("doFilter方法,过滤器的拦截方法执行了"); + //放行API + filterChain.doFilter(servletRequest,servletResponse); + } + + @Override + public void destroy() { + Filter.super.destroy(); + log.info("destroy方法,过滤器的销毁方法执行了"); + } +} diff --git a/tlias-web-management/src/main/java/com/inmind/utils/JwtUtils.java b/tlias-web-management/src/main/java/com/inmind/utils/JwtUtils.java new file mode 100644 index 0000000..7a90c79 --- /dev/null +++ b/tlias-web-management/src/main/java/com/inmind/utils/JwtUtils.java @@ -0,0 +1,44 @@ +package com.inmind.utils; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.util.Date; +import java.util.Map; + +public class JwtUtils { + + private static String signKey = "inmind"; + private static Long expriation = 60 * 60 * 1000L; + + //生成令牌 + + /** + * + * @param claims 自定义载荷数据(json数据) + * @return 令牌字符串 + */ + public static String generateJwt(Map claims){ + String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, signKey) + .setClaims(claims)//设置载荷(自定义数据,用户信息数据) + .setExpiration(new Date(System.currentTimeMillis()+expriation))//设置过期时间(有效时间为1小时) + .compact(); + return jwt; + } + + //解析令牌 + /** + * + * @param jwt 要校验的令牌字符串 + * @return 解析之后的载荷数据 + */ + public static Claims parseJWT(String jwt){ + Claims claims = Jwts.parser() + .setSigningKey(signKey)//设置签名秘钥(解析JWT时,最重要的就是输入正确的签名秘钥) + .parseClaimsJws(jwt) + .getBody(); + return claims; + } + +}