From 20a1ff40d264d4c3b0aa66e74679632636afeefe Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 25 Jul 2025 12:06:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud-integrated-biz/pom.xml | 5 +-- .../config/VisitorTokenInterceptor.java | 31 ++++++++++++------- .../controller/AppVisitorUserController.java | 16 +++++----- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/pjcloud-integrated/pjcloud-integrated-biz/pom.xml b/pjcloud-integrated/pjcloud-integrated-biz/pom.xml index 72fb3946e..02475f028 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/pom.xml +++ b/pjcloud-integrated/pjcloud-integrated-biz/pom.xml @@ -14,8 +14,9 @@ - cn.hutool - hutool-jwt + com.auth0 + java-jwt + 4.4.0 diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/config/VisitorTokenInterceptor.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/config/VisitorTokenInterceptor.java index 057fe2e50..846941485 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/config/VisitorTokenInterceptor.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/config/VisitorTokenInterceptor.java @@ -1,7 +1,9 @@ package com.bsd.pjcloud.integrated.config; -import cn.hutool.jwt.JWT; -import cn.hutool.jwt.JWTUtil; +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.auth0.jwt.exceptions.JWTVerificationException; import com.bsd.pjcloud.integrated.service.VisitorsService; import com.bsd.pjcloud.integrated.service.VisitorUserService; import jakarta.servlet.http.HttpServletRequest; @@ -32,34 +34,39 @@ public class VisitorTokenInterceptor implements HandlerInterceptor { response.getWriter().write("Unauthorized: token missing"); return false; } - JWT jwt = JWTUtil.parseToken(token); - boolean verify = jwt.setKey(secret.getBytes()).verify(); - if (!verify) { + DecodedJWT jwt = null; + try { + jwt = JWT.require(Algorithm.HMAC256(secret)).build().verify(token); + } catch (JWTVerificationException e) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write("Unauthorized: token invalid"); return false; } // 校验过期时间 - Object expObj = jwt.getPayload("exp"); - if (expObj == null || Long.parseLong(expObj.toString()) < System.currentTimeMillis()) { + Long exp = null; + try { + exp = jwt.getClaim("exp").asLong(); + } catch (Exception e) { + exp = null; + } + if (exp == null || exp < System.currentTimeMillis()) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write("Unauthorized: token expired"); return false; } - Object userType = jwt.getPayload("userType"); - if (userType == null || !"visitor".equals(userType.toString())) { + String userType = jwt.getClaim("userType").asString(); + if (userType == null || !"visitor".equals(userType)) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write("Unauthorized: not visitor"); return false; } // 账号状态校验 - Object idObj = jwt.getPayload("id"); - if (idObj == null) { + Long userId = jwt.getClaim("id").asLong(); + if (userId == null) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write("Unauthorized: no user id"); return false; } - Long userId = Long.valueOf(idObj.toString()); com.bsd.pjcloud.integrated.entity.VisitorUserEntity user = visitorUserService.getById(userId); if (user == null || "1".equals(user.getStatus())) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java index ddda33117..29c587a37 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java @@ -1,7 +1,8 @@ package com.bsd.pjcloud.integrated.controller; -import cn.hutool.jwt.JWT; +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.util.R; @@ -88,13 +89,12 @@ public class AppVisitorUserController { } String token = JWT.create() - .setPayload("id", account.getId()) - .setPayload("phone", account.getPhone()) - .setPayload("userType", "visitor") - .setPayload("realName", account.getRealName()) - .setPayload("exp", System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 7) - .setKey(secret.getBytes()) - .sign(); + .withClaim("id", account.getId()) + .withClaim("phone", account.getPhone()) + .withClaim("userType", "visitor") + .withClaim("realName", account.getRealName()) + .withClaim("exp", System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 7) + .sign(Algorithm.HMAC256(secret)); response.put("code", 200); response.put("message", "登录成功");