mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-09-17 19:06:39 +08:00
update system env
This commit is contained in:
parent
1ad96b81e9
commit
0d17270b11
@ -8,6 +8,7 @@ import net.lab1024.sa.common.common.interceptor.AbstractInterceptor;
|
||||
import net.lab1024.sa.common.common.util.SmartEnumUtil;
|
||||
import net.lab1024.sa.common.handler.GlobalExceptionHandler;
|
||||
import net.lab1024.sa.common.module.support.token.TokenService;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@ -22,6 +23,22 @@ import javax.servlet.http.HttpServletResponse;
|
||||
@Configuration
|
||||
public class AdminInterceptor extends AbstractInterceptor {
|
||||
|
||||
/**
|
||||
* 开发环境 方便调试 默认 user id 1
|
||||
* 可以根据id 查询实际用户数据
|
||||
*
|
||||
* @param token
|
||||
*/
|
||||
@Override
|
||||
public RequestUser getDevRequestUser(String token) {
|
||||
long userId = NumberUtils.toLong(token, 1L);
|
||||
RequestUser requestUser = new RequestUser();
|
||||
requestUser.setUserId(userId);
|
||||
requestUser.setUserName("dev");
|
||||
requestUser.setUserType(UserTypeEnum.ADMIN_EMPLOYEE);
|
||||
return requestUser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestUser checkTokenAndGetUser() {
|
||||
/**
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.sa.common.common.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
|
||||
|
||||
/**
|
||||
* 系统环境
|
||||
@ -16,7 +16,7 @@ import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class SystemEnvironment {
|
||||
public class SystemEnv {
|
||||
|
||||
/**
|
||||
* 是否位生产环境
|
||||
@ -31,5 +31,5 @@ public class SystemEnvironment {
|
||||
/**
|
||||
* 当前环境
|
||||
*/
|
||||
private SystemEnvironmentEnum currentEnvironment;
|
||||
private SystemEnvEnum currentEnv;
|
||||
}
|
@ -15,7 +15,7 @@ import lombok.Getter;
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum SystemEnvironmentEnum implements BaseEnum {
|
||||
public enum SystemEnvEnum implements BaseEnum {
|
||||
/**
|
||||
* dev
|
||||
*/
|
@ -8,8 +8,12 @@ import net.lab1024.sa.common.common.constant.RequestHeaderConst;
|
||||
import net.lab1024.sa.common.common.constant.StringConst;
|
||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnv;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
|
||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@ -23,6 +27,7 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* 抽象拦截器
|
||||
* 如果有额外的拦截处理 可以继承此类
|
||||
*
|
||||
* @Author 1024创新实验室: 罗伊
|
||||
* @Date 2021-10-09 20:56:14
|
||||
@ -32,6 +37,9 @@ import java.util.List;
|
||||
*/
|
||||
public abstract class AbstractInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Autowired
|
||||
private SystemEnv systemEnv;
|
||||
|
||||
/**
|
||||
* Token获取用户信息
|
||||
*
|
||||
@ -39,6 +47,14 @@ public abstract class AbstractInterceptor implements HandlerInterceptor {
|
||||
*/
|
||||
public abstract RequestUser checkTokenAndGetUser();
|
||||
|
||||
/**
|
||||
* 获取 dev 开发用户
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
public abstract RequestUser getDevRequestUser(String token);
|
||||
|
||||
/**
|
||||
* 拦截路径
|
||||
*
|
||||
@ -89,24 +105,25 @@ public abstract class AbstractInterceptor implements HandlerInterceptor {
|
||||
if (this.contain(this.getIgnoreUrlList(), target)) {
|
||||
return true;
|
||||
}
|
||||
//不需要登录
|
||||
NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class);
|
||||
// 检查是否包含 token
|
||||
String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN);
|
||||
String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN);
|
||||
String xAccessToken = StringUtils.isNotBlank(xRequestToken) ? xRequestToken : xHeaderToken;
|
||||
// 包含token 则获取用户信息 并保存
|
||||
if (StringUtils.isNotBlank(xAccessToken)) {
|
||||
RequestUser requestUser = this.checkTokenAndGetUser();
|
||||
if (requestUser != null) {
|
||||
// TODO listen 待处理有token 已失效的情况
|
||||
RequestUser requestUser;
|
||||
// 开发环境 token 处理 不需要的话 可以去掉
|
||||
if (SystemEnvEnum.DEV == systemEnv.getCurrentEnv() && NumberUtils.isDigits(xAccessToken)) {
|
||||
requestUser = this.getDevRequestUser(xAccessToken);
|
||||
} else {
|
||||
requestUser = this.checkTokenAndGetUser();
|
||||
}
|
||||
SmartRequestUtil.setUser(requestUser);
|
||||
}
|
||||
// 有token 无需登录
|
||||
if (null != noNeedLogin) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// 无token 无需登录
|
||||
|
||||
// 是否需要登录
|
||||
NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class);
|
||||
if (null != noNeedLogin) {
|
||||
return true;
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ public class DataSourceConfig {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Conditional(SystemEnvironmentConfig.class)
|
||||
@Conditional(SystemEnvConfig.class)
|
||||
@Bean
|
||||
public ServletRegistrationBean<StatViewServlet> druidServlet() {
|
||||
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
||||
|
@ -57,7 +57,7 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@EnableSwagger2
|
||||
@Configuration
|
||||
@Conditional(SystemEnvironmentConfig.class)
|
||||
@Conditional(SystemEnvConfig.class)
|
||||
public class SwaggerConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor {
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,7 @@
|
||||
package net.lab1024.sa.common.config;
|
||||
|
||||
import net.lab1024.sa.common.common.domain.SystemEnvironment;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnv;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
|
||||
import net.lab1024.sa.common.common.util.SmartEnumUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -21,7 +21,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
||||
*/
|
||||
@Configuration
|
||||
public class SystemEnvironmentConfig implements Condition {
|
||||
public class SystemEnvConfig implements Condition {
|
||||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String systemEnvironment;
|
||||
@ -32,18 +32,18 @@ public class SystemEnvironmentConfig implements Condition {
|
||||
@Override
|
||||
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
|
||||
String property = conditionContext.getEnvironment().getProperty("spring.profiles.active");
|
||||
return StringUtils.isNotBlank(property) && !SystemEnvironmentEnum.PROD.equalsValue(property);
|
||||
return StringUtils.isNotBlank(property) && !SystemEnvEnum.PROD.equalsValue(property);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SystemEnvironment initEnvironment() {
|
||||
SystemEnvironmentEnum currentEnvironment = SmartEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class);
|
||||
if (currentEnvironment == null) {
|
||||
public SystemEnv initEnvironment() {
|
||||
SystemEnvEnum currentEnv = SmartEnumUtil.getEnumByValue(systemEnvironment, SystemEnvEnum.class);
|
||||
if (currentEnv == null) {
|
||||
throw new ExceptionInInitializerError("无法获取当前环境!请在 application.yaml 配置参数:spring.profiles.active");
|
||||
}
|
||||
if (StringUtils.isBlank(projectName)) {
|
||||
throw new ExceptionInInitializerError("无法获取当前项目名称!请在 application.yaml 配置参数:project.name");
|
||||
}
|
||||
return new SystemEnvironment(currentEnvironment == SystemEnvironmentEnum.PROD, projectName, currentEnvironment);
|
||||
return new SystemEnv(currentEnv == SystemEnvEnum.PROD, projectName, currentEnv);
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.sa.common.common.code.SystemErrorCode;
|
||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnvironment;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnv;
|
||||
import net.lab1024.sa.common.common.exception.BusinessException;
|
||||
import org.springframework.beans.TypeMismatchException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -37,7 +37,7 @@ import java.util.stream.Collectors;
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
@Autowired
|
||||
private SystemEnvironment systemEnvironment;
|
||||
private SystemEnv systemEnvironment;
|
||||
|
||||
/**
|
||||
* json 格式错误 缺少请求体
|
||||
|
@ -2,10 +2,9 @@ package net.lab1024.sa.common.module.support.captcha;
|
||||
|
||||
import com.google.code.kaptcha.impl.DefaultKaptcha;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
||||
import net.lab1024.sa.common.common.constant.StringConst;
|
||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnvironment;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnv;
|
||||
import net.lab1024.sa.common.common.exception.BusinessException;
|
||||
import net.lab1024.sa.common.constant.RedisKeyConst;
|
||||
import net.lab1024.sa.common.module.support.captcha.domain.CaptchaForm;
|
||||
@ -43,7 +42,7 @@ public class CaptchaService {
|
||||
@Autowired
|
||||
private DefaultKaptcha defaultKaptcha;
|
||||
@Autowired
|
||||
private SystemEnvironment systemEnvironment;
|
||||
private SystemEnv systemEnvironment;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package net.lab1024.sa.common.module.support.redis;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnvironment;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum;
|
||||
import net.lab1024.sa.common.common.domain.SystemEnv;
|
||||
import net.lab1024.sa.common.common.enumeration.SystemEnvEnum;
|
||||
import net.lab1024.sa.common.common.util.SmartStringUtil;
|
||||
import net.lab1024.sa.common.constant.RedisKeyConst;
|
||||
import org.slf4j.Logger;
|
||||
@ -52,7 +52,7 @@ public class RedisService {
|
||||
private SetOperations<String, Object> redisSetOperations;
|
||||
|
||||
@Autowired
|
||||
private SystemEnvironment systemEnvironment;
|
||||
private SystemEnv systemEnvironment;
|
||||
|
||||
|
||||
/**
|
||||
@ -62,7 +62,7 @@ public class RedisService {
|
||||
* @return
|
||||
*/
|
||||
public String generateRedisKey(String prefix, String key) {
|
||||
SystemEnvironmentEnum currentEnvironment = systemEnvironment.getCurrentEnvironment();
|
||||
SystemEnvEnum currentEnvironment = systemEnvironment.getCurrentEnv();
|
||||
return systemEnvironment.getProjectName() + RedisKeyConst.SEPARATOR + currentEnvironment.getValue() + RedisKeyConst.SEPARATOR + prefix + key;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class TokenService {
|
||||
SaLoginModel loginModel = new SaLoginModel();
|
||||
// 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型
|
||||
loginModel.setDevice(String.valueOf(loginDeviceEnum.getDesc()));
|
||||
// 扩展参数
|
||||
// 扩展参数 只在 jwt 模式下 有效
|
||||
loginModel.setExtra(EXTRA_KEY_USER_NAME, userName);
|
||||
loginModel.setExtra(EXTRA_KEY_USER_TYPE, userTypeEnum.getValue());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user