From 627740d92c25f9ca783af8361d18faa2377b9bf7 Mon Sep 17 00:00:00 2001 From: Github_lizhw <171332584@qq.com> Date: Mon, 13 Jan 2025 23:25:06 +0800 Subject: [PATCH] =?UTF-8?q?sso=20server=E6=94=AF=E6=8C=81vue=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 20 +++++ ruoyi-site/ruoyi-gateway/pom.xml | 14 +-- .../gateway/RuoYiGatewayApplication.java | 2 +- .../gateway/config/SaTokenConfigure.java | 15 ++++ .../dromara/gateway/filter/AuthFilter.java | 13 +-- .../src/main/resources/application-dev.yml | 88 ++++++++++++++----- .../src/main/resources/logback-plus.xml | 4 +- ruoyi-site/ruoyi-sso-server/pom.xml | 3 - .../src/main/resources/application-dev.yml | 3 +- script/docker_app/docker-compose.yml | 28 +++++- 10 files changed, 147 insertions(+), 43 deletions(-) create mode 100644 ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/config/SaTokenConfigure.java diff --git a/pom.xml b/pom.xml index ce30077ea..b181c1687 100644 --- a/pom.xml +++ b/pom.xml @@ -220,6 +220,26 @@ ${satoken.version} + + + cn.dev33 + sa-token-redis-jackson + ${satoken.version} + + + + cn.dev33 + sa-token-alone-redis + ${satoken.version} + + + + + cn.dev33 + sa-token-sso + ${satoken.version} + + com.baomidou diff --git a/ruoyi-site/ruoyi-gateway/pom.xml b/ruoyi-site/ruoyi-gateway/pom.xml index 8e6f4b197..a3069f005 100644 --- a/ruoyi-site/ruoyi-gateway/pom.xml +++ b/ruoyi-site/ruoyi-gateway/pom.xml @@ -32,10 +32,10 @@ caffeine - - org.dromara - ruoyi-common-nacos - + + + + @@ -84,13 +84,17 @@ cn.dev33 sa-token-redis-jackson - ${satoken.version} org.apache.commons commons-pool2 + + + cn.dev33 + sa-token-alone-redis + diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java index e1f4b9680..03b07f964 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java +++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/RuoYiGatewayApplication.java @@ -10,7 +10,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt * * @author ruoyi */ -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class},scanBasePackages = {"org.dromara"}) public class RuoYiGatewayApplication { public static void main(String[] args) { // 标记 sentinel 类型为 网关 diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/config/SaTokenConfigure.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/config/SaTokenConfigure.java new file mode 100644 index 000000000..f5824ba5d --- /dev/null +++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/config/SaTokenConfigure.java @@ -0,0 +1,15 @@ +package org.dromara.gateway.config; + +import cn.dev33.satoken.jwt.StpLogicJwtForSimple; +import cn.dev33.satoken.stp.StpLogic; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SaTokenConfigure { + // Sa-Token 整合 jwt (Simple 简单模式) + @Bean + public StpLogic getStpLogicJwt() { + return new StpLogicJwtForSimple(); + } +} diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java index d4a259ad3..791297156 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java +++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java @@ -7,10 +7,10 @@ import cn.dev33.satoken.reactor.filter.SaReactorFilter; import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.gateway.config.properties.IgnoreWhiteProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -22,7 +22,9 @@ import org.springframework.http.server.reactive.ServerHttpRequest; * @author Lion Li */ @Configuration +@Slf4j public class AuthFilter { + public static final String CLIENT_KEY = "clientid"; /** * 注册 Sa-Token 全局过滤器 @@ -54,9 +56,9 @@ public class AuthFilter { } // 检查 header 与 param 里的 clientid 与 token 里的是否一致 - String headerCid = request.getHeaders().getFirst(LoginHelper.CLIENT_KEY); - String paramCid = request.getQueryParams().getFirst(LoginHelper.CLIENT_KEY); - String clientId = StpUtil.getExtra(LoginHelper.CLIENT_KEY).toString(); + String headerCid = request.getHeaders().getFirst(CLIENT_KEY); + String paramCid = request.getQueryParams().getFirst(CLIENT_KEY); + String clientId = StpUtil.getExtra(CLIENT_KEY).toString(); if (!StringUtils.equalsAny(clientId, headerCid, paramCid)) { // token 无效 throw NotLoginException.newInstance(StpUtil.getLoginType(), @@ -71,7 +73,8 @@ public class AuthFilter { // } }); }).setError(e -> { - if (e instanceof NotLoginException) { + log.error("认证错误", e); + if (e instanceof NotLoginException) { return SaResult.error(e.getMessage()).setCode(HttpStatus.UNAUTHORIZED); } return SaResult.error("认证失败,无法访问系统资源").setCode(HttpStatus.UNAUTHORIZED); diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml index 6bd1569b2..594147145 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml +++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml @@ -19,30 +19,17 @@ security: - /sso/isLogin - /sso/doLoginByTicket -# sa-token配置 -sa-token: - sign: - # API client和server之间调用 接口签名秘钥 (随便乱摁几个字母即可) - secret-key: kQwIOrYbtXmSDkwEiFngrKidMcdrgKor - # token名称 (同时也是cookie名称) - token-name: Authorization - # 允许动态设置 token 有效期 - dynamic-active-timeout: true - # 允许从 header 读取 token - is-read-header: true - # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险 - is-read-cookie: false - # SSO-相关配置 - sso-client: - # SSO-Server 端主机地址 - server-url: http://sa-sso-server.com:19000 - auth-url: http://sa-sso-server.com:8701/?mode=ticket#/sso-login - client: "e5cd7e4891bf95d1d19206ce24a7b32e" - #jwt密钥 - jwt-secret-key: abcdcosctlklmnopqrstuvwxyz - token-prefix: Bearer - spring: + data: + redis: + host: localhost # Redis服务器地址 + database: 0 # Redis数据库索引(默认为0) + port: 6379 # Redis服务器连接端口 + password: Lzw8800580/ + # 连接超时时间 + timeout: 10s + # 是否开启ssl + ssl.enabled: false cloud: # 网关配置 gateway: @@ -100,3 +87,58 @@ spring: - Path=/ruoyi-h5/** filters: - StripPrefix=1 + + +# sa-token配置 +sa-token: + sign: + # API client和server之间调用 接口签名秘钥 (随便乱摁几个字母即可) + secret-key: kQwIOrYbtXmSDkwEiFngrKidMcdrgKor + # token名称 (同时也是cookie名称) + token-name: Authorization + # 允许从 header 读取 token + is-read-header: true + # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险 + is-read-cookie: false + # 允许从 请求参数 读取 token + is-read-body: true + # 在多人登录同一账号时,是否共用一个token (为true(默认)时所有登录共用一个token, 为false时每次登录新建一个token),这个为false会导致登陆多次后redis内存的token不能很好释放 + is-share: false + # SSO-相关配置 + sso-client: + # SSO-Server 端主机地址 + server-url: http://sa-sso-server.com:19000 + auth-url: http://sa-sso-server.com:8701/?mode=ticket#/sso-login + # pc 客户端id + client: e5cd7e4891bf95d1d19206ce24a7b32e + #jwt密钥 + jwt-secret-key: abcdcosctlklmnopqrstuvwxyz + token-prefix: Bearer + + # 配置Sa-Token单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis) + alone-redis: + # Redis数据库索引 (默认为0) + database: ${spring.data.redis.database} + # Redis服务器地址 + host: ${spring.data.redis.host} + # Redis服务器连接端口 + port: ${spring.data.redis.port} + # Redis服务器连接密码(默认为空) + password: ${spring.data.redis.password} + # 连接超时时间 + timeout: ${spring.data.redis.timeout} + lettuce: + pool: + # 连接池最大连接数 + max-active: 200 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + # 连接池中的最大空闲连接 + max-idle: 10 + # 连接池中的最小空闲连接 + min-idle: 1 + +# 多租户配置 +tenant: + # 是否开启 + enable: false diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/logback-plus.xml b/ruoyi-site/ruoyi-gateway/src/main/resources/logback-plus.xml index 4d66014c6..35332d789 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/resources/logback-plus.xml +++ b/ruoyi-site/ruoyi-gateway/src/main/resources/logback-plus.xml @@ -4,8 +4,8 @@ - + value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}:%line) - %msg%n"/> + diff --git a/ruoyi-site/ruoyi-sso-server/pom.xml b/ruoyi-site/ruoyi-sso-server/pom.xml index fab48a223..5c8e94d4d 100644 --- a/ruoyi-site/ruoyi-sso-server/pom.xml +++ b/ruoyi-site/ruoyi-sso-server/pom.xml @@ -95,7 +95,6 @@ cn.dev33 sa-token-redis-jackson - 1.38.0 org.apache.commons @@ -106,14 +105,12 @@ cn.dev33 sa-token-sso - 1.38.0 cn.dev33 sa-token-sso - 1.38.0 diff --git a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml index 044179321..99a228887 100644 --- a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml +++ b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml @@ -44,7 +44,7 @@ sa-token: # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) is-concurrent: true # 在多人登录同一账号时,是否共用一个token (为true(默认)时所有登录共用一个token, 为false时每次登录新建一个token),这个为false会导致登陆多次后redis内存的token不能很好释放 - is-share: true + is-share: false # jwt秘钥 jwt-secret-key: abcdcosctlklmnopqrstuvwxyz @@ -56,7 +56,6 @@ sa-token: allow-url: "*" auth-url: http://sa-sso-server.com:5173/#/sso-login - active-timeout: 30 # api接口加密 diff --git a/script/docker_app/docker-compose.yml b/script/docker_app/docker-compose.yml index c96261e37..d8ecf8d33 100644 --- a/script/docker_app/docker-compose.yml +++ b/script/docker_app/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '3.5' services: ruoyi-admin: image: ruoyi-admin:latest @@ -9,6 +9,11 @@ services: - 'TZ="Asia/Shanghai"' networks: - docker_default + deploy: + resources: + limits: + memory: 1024m # 限制内存为 512m + ruoyi-sso-server: image: ruoyi-sso-server:latest container_name: ruoyi-sso-server @@ -18,6 +23,11 @@ services: - 'TZ="Asia/Shanghai"' networks: - docker_default + deploy: + resources: + limits: + memory: 248m # 限制内存为 248mB + ruoyi-h5: image: ruoyi-h5:latest container_name: ruoyi-h5 @@ -27,6 +37,11 @@ services: - 'TZ="Asia/Shanghai"' networks: - docker_default + deploy: + resources: + limits: + memory: 248m # 限制内存为 248mB + ruoyi-gateway: image: ruoyi-gateway:latest container_name: ruoyi-gateway @@ -36,7 +51,11 @@ services: - 'TZ="Asia/Shanghai"' networks: - docker_default -# # 前端 + deploy: + resources: + limits: + memory: 248m # 限制内存为 248mB + sso-server-vue3: image: sso-server-vue3:latest container_name: sso-server-vue3 @@ -46,6 +65,11 @@ services: - 'TZ="Asia/Shanghai"' networks: - docker_default + deploy: + resources: + limits: + memory: 60m # 限制内存为 60MB + networks: docker_default: external: true