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