diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java index 30e7eb50..59ba1fd1 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -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() { /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnv.java similarity index 76% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java rename to smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnv.java index 8cf4b845..4a709a25 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnv.java @@ -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; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvEnum.java similarity index 94% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java rename to smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvEnum.java index bccaecbd..577f9ed9 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvEnum.java @@ -15,7 +15,7 @@ import lombok.Getter; */ @AllArgsConstructor @Getter -public enum SystemEnvironmentEnum implements BaseEnum { +public enum SystemEnvEnum implements BaseEnum { /** * dev */ diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java index 22290a44..3b32b623 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java @@ -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) { - SmartRequestUtil.setUser(requestUser); - } - // 有token 无需登录 - if (null != noNeedLogin) { - return true; + // 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 无需登录 + + // 是否需要登录 + NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class); if (null != noNeedLogin) { return true; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java index cb937a0b..3d4b0bd6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java @@ -153,7 +153,7 @@ public class DataSourceConfig { * * @return */ - @Conditional(SystemEnvironmentConfig.class) + @Conditional(SystemEnvConfig.class) @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean<>(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java index 901b9246..bf0a0940 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java @@ -57,7 +57,7 @@ import java.util.Map; @Slf4j @EnableSwagger2 @Configuration -@Conditional(SystemEnvironmentConfig.class) +@Conditional(SystemEnvConfig.class) public class SwaggerConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor { /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvConfig.java similarity index 69% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java rename to smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvConfig.java index 1af9577a..bc6b747e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvConfig.java @@ -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); } } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java index fa3e1bb9..25adf2ba 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java @@ -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 格式错误 缺少请求体 diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java index 36042c67..8911c7c7 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java @@ -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; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java index f99f29ef..3c309499 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java @@ -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 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; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java index 3a19712a..40953676 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java +++ b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java @@ -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());