diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 4aaea57e7..61a60cfad 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -43,7 +43,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) - url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true + url: jdbc:mysql://127.0.0.1:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true username: root password: root # 从库数据源 @@ -92,11 +92,11 @@ spring: spring.data: redis: # 地址 - host: localhost + host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 - database: 0 + database: 9 # 密码(如没有密码请注释掉) # password: # 连接超时时间 diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java index ce8d85c0b..cb2426767 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java @@ -7,6 +7,7 @@ import cn.dev33.satoken.stp.StpLogic; import org.dromara.common.core.factory.YmlPropertySourceFactory; import org.dromara.common.satoken.core.dao.PlusSaTokenDao; import org.dromara.common.satoken.core.service.SaPermissionImpl; +import org.dromara.common.satoken.handler.UserInfoThreadHandler; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; @@ -42,4 +43,9 @@ public class SaTokenConfig { return new PlusSaTokenDao(); } + @Bean + public UserInfoThreadHandler userInfoThreadHandler() { + return new UserInfoThreadHandler(); + } + } diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/WebMvcConfig.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/WebMvcConfig.java new file mode 100644 index 000000000..5957b2353 --- /dev/null +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/WebMvcConfig.java @@ -0,0 +1,27 @@ +package org.dromara.common.satoken.config; + +import org.dromara.common.satoken.interceptor.LoginInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @Author RebelTinker + * @Date 2023/12/25 09:43 + **/ +@AutoConfiguration +public class WebMvcConfig implements WebMvcConfigurer { + + @Autowired + private LoginInterceptor loginInterceptor; + + + //注册拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + + registry.addInterceptor(loginInterceptor).addPathPatterns("/**"); + } + +} diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/handler/UserInfoThreadHandler.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/handler/UserInfoThreadHandler.java new file mode 100644 index 000000000..c883b6993 --- /dev/null +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/handler/UserInfoThreadHandler.java @@ -0,0 +1,40 @@ +package org.dromara.common.satoken.handler; + +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.satoken.utils.LoginHelper; + +/** + * @Author RebelTinker + * @Date 2023/12/25 09:37 + **/ +public class UserInfoThreadHandler { + + private static final ThreadLocal userThreadLocal = new ThreadLocal<>(); + + /** + * 添加当前登录用户方法 + */ + public static void addCurrentUser() { + + //登录对象从这里获取然后set进ThreadLocal + LoginUser loginUser = LoginHelper.getLoginUser(); + + userThreadLocal.set(loginUser); + } + + /** + * 获取用户信息 + * + * @return LoginUser + */ + public static LoginUser getCurrentUser() { + return userThreadLocal.get(); + } + + /** + * 防止内存泄漏 + */ + public static void remove() { + userThreadLocal.remove(); + } +} diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/interceptor/LoginInterceptor.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/interceptor/LoginInterceptor.java new file mode 100644 index 000000000..eee165be1 --- /dev/null +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/interceptor/LoginInterceptor.java @@ -0,0 +1,28 @@ +package org.dromara.common.satoken.interceptor; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.dromara.common.satoken.handler.UserInfoThreadHandler; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +/** + * @Author RebelTinker + * @Date 2023/12/25 09:42 + **/ +@Component +public class LoginInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + UserInfoThreadHandler.addCurrentUser(); + return true; + } + + /** + * 避免内存泄露 + */ + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + UserInfoThreadHandler.remove(); + } +} diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-satoken/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 6dd284fb2..db8badf73 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-common/ruoyi-common-satoken/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,2 @@ org.dromara.common.satoken.config.SaTokenConfig +org.dromara.common.satoken.config.WebMvcConfig