Pre Merge pull request !466 from RebelTinker/dev

This commit is contained in:
RebelTinker 2023-12-25 01:52:34 +00:00 committed by Gitee
commit 37d9736dff
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
6 changed files with 105 additions and 3 deletions

View File

@ -43,7 +43,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # 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 username: root
password: root password: root
# 从库数据源 # 从库数据源
@ -92,11 +92,11 @@ spring:
spring.data: spring.data:
redis: redis:
# 地址 # 地址
host: localhost host: 127.0.0.1
# 端口默认为6379 # 端口默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 0 database: 9
# 密码(如没有密码请注释掉) # 密码(如没有密码请注释掉)
# password: # password:
# 连接超时时间 # 连接超时时间

View File

@ -7,6 +7,7 @@ import cn.dev33.satoken.stp.StpLogic;
import org.dromara.common.core.factory.YmlPropertySourceFactory; import org.dromara.common.core.factory.YmlPropertySourceFactory;
import org.dromara.common.satoken.core.dao.PlusSaTokenDao; import org.dromara.common.satoken.core.dao.PlusSaTokenDao;
import org.dromara.common.satoken.core.service.SaPermissionImpl; import org.dromara.common.satoken.core.service.SaPermissionImpl;
import org.dromara.common.satoken.handler.UserInfoThreadHandler;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
@ -42,4 +43,9 @@ public class SaTokenConfig {
return new PlusSaTokenDao(); return new PlusSaTokenDao();
} }
@Bean
public UserInfoThreadHandler userInfoThreadHandler() {
return new UserInfoThreadHandler();
}
} }

View File

@ -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("/**");
}
}

View File

@ -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<LoginUser> 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();
}
}

View File

@ -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();
}
}

View File

@ -1 +1,2 @@
org.dromara.common.satoken.config.SaTokenConfig org.dromara.common.satoken.config.SaTokenConfig
org.dromara.common.satoken.config.WebMvcConfig