From 2c22b4304a629133ab288c4a2271168eac681a31 Mon Sep 17 00:00:00 2001 From: gitee Date: Thu, 31 Jul 2025 14:59:11 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=9C=A8=E7=99=BD=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E4=B8=AD=E7=9A=84url=E4=B9=9F=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=202.=20?= =?UTF-8?q?=E7=BC=96=E5=86=99dockerfile=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/README.md | 15 ++ doc/server/Dockerfile | 14 ++ pom.xml | 153 ++++++++++++++++++ .../filter/JwtAuthenticationFilter.java | 29 +++- 4 files changed, 207 insertions(+), 4 deletions(-) create mode 100644 doc/README.md create mode 100644 doc/server/Dockerfile create mode 100644 pom.xml diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..409629d --- /dev/null +++ b/doc/README.md @@ -0,0 +1,15 @@ +# 运行 + +## 构建后端docker镜像 + +进入Dockerfile所在目录执行命令: + +```shell +docker build -t live-digital-avatar-manage:1.0.0 . +``` + +## 启动后端服务 + +```shell +docker run -itd --name live-digital-avatar-manage -v /data/live-digital-avatar/server:/data/live-digital-avatar/web/ -p 9909:9909 live-digital-avatar-manage:1.0.0 +``` diff --git a/doc/server/Dockerfile b/doc/server/Dockerfile new file mode 100644 index 0000000..b994abd --- /dev/null +++ b/doc/server/Dockerfile @@ -0,0 +1,14 @@ +# 设置基础镜像 +FROM openjdk:17-jdk-alpine + +# 设置时区(安装 tzdata 并配置) +RUN apk add --no-cache tzdata && \ + ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + echo "Asia/Shanghai" > /etc/timezone + + +# 暴漏服务端口 +EXPOSE 8080 + +# 设置启动命令 +ENTRYPOINT ["java","-Xms256m","-Xmx1g", "-Xss2m","-Dfile.encoding=utf-8","-Duser.timezone=Asia/Shanghai","-jar","/data/live-digital-avatar/web/live-digital-avatar-manage-0.0.1-SNAPSHOT.jar"] diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0f6a23c --- /dev/null +++ b/pom.xml @@ -0,0 +1,153 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.4.4 + + + com.supervision + live-digital-avatar-manage + 0.0.1-SNAPSHOT + live-digital-avatar-manage + live-digital-avatar-manage + + 17 + 17 + UTF-8 + 1.0.0-M7 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-aop + + + com.alibaba + druid-spring-boot-3-starter + 1.2.21 + + + com.baomidou + mybatis-plus-spring-boot3-starter + 3.5.7 + + + com.baomidou + mybatis-plus-boot-starter + 3.5.5 + + + org.springframework.boot + spring-boot-starter-websocket + + + com.hankcs + hanlp + portable-1.8.6 + + + org.postgresql + postgresql + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + cn.hutool + hutool-all + 5.8.26 + + + com.alibaba + fastjson + 1.2.83_noneautotype + + + com.fasterxml.jackson.core + jackson-core + 2.15.3 + + + com.fasterxml.jackson.core + jackson-databind + 2.15.3 + + + org.commonmark + commonmark + 0.21.0 + + + org.commonmark + commonmark-ext-gfm-tables + 0.21.0 + + + io.jsonwebtoken + jjwt-api + 0.12.5 + + + io.jsonwebtoken + jjwt-impl + 0.12.5 + runtime + + + io.jsonwebtoken + jjwt-jackson + 0.12.5 + runtime + + + org.springframework.ai + spring-ai-starter-model-ollama + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + diff --git a/src/main/java/com/supervision/livedigitalavatarmanage/filter/JwtAuthenticationFilter.java b/src/main/java/com/supervision/livedigitalavatarmanage/filter/JwtAuthenticationFilter.java index 7ce6e1e..aed07d0 100644 --- a/src/main/java/com/supervision/livedigitalavatarmanage/filter/JwtAuthenticationFilter.java +++ b/src/main/java/com/supervision/livedigitalavatarmanage/filter/JwtAuthenticationFilter.java @@ -36,14 +36,15 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { FilterChain filterChain) throws IOException, ServletException { // 1. 检查是否在白名单中 - if (isPermitAllRequest(request)) { - filterChain.doFilter(request, response); - return; - } + boolean permitAllRequest = isPermitAllRequest(request); String authHeader = request.getHeader("Authorization"); //2:根本没有 Authorization 头 if (authHeader == null || !authHeader.startsWith("Bearer ")) { + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "用户未登录,请登录"); return; // 直接返回,不放行 } @@ -54,6 +55,10 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { try { username = jwtUtils.getUsernameFromToken(token); } catch (Exception e) { + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "Token 无效或已过期,请重新登录"); return; } @@ -79,18 +84,34 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { } else { //Token 过期 或 登录态不一致 + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "登录已过期,请重新登录"); return; } } catch (UsernameNotFoundException e) { + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "用户不存在"); return; } catch (Exception e) { + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "用户认证异常:" + e.getMessage()); return; } } + if (permitAllRequest) { + filterChain.doFilter(request, response); + return; + } writeTokenErrorResponse(response, "认证流程异常,请重新登录"); } private void writeTokenErrorResponse(HttpServletResponse response, String message) throws IOException {