From 53b41230942d4ee94b984dc7df6826c5dad54304 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 9 May 2023 10:19:54 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E6=94=B9=E9=80=A0=E3=80=91=E3=80=90auth=E3=80=91?= =?UTF-8?q?=E3=80=90jwt=E3=80=91=E5=87=8F=E5=B0=8Fjwt=E7=9A=84=E8=81=8C?= =?UTF-8?q?=E8=B4=A3=EF=BC=8Cjwt=E6=A8=A1=E5=9D=97=E4=BF=9D=E6=8C=81?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/auth/api/AuthJwtTokenApi.java | 44 +++++++-------- .../roses/kernel/auth/api/AuthServiceApi.java | 2 +- .../auth/api/context/AuthJwtContext.java | 10 ++-- .../auth}/api/expander/JwtConfigExpander.java | 2 +- .../api/pojo/payload/DefaultJwtPayload.java | 2 +- .../kernel/auth/auth/AuthServiceImpl.java | 14 +++-- .../kernel/auth/jwt/AuthJwtTokenService.java | 56 +++++++++++++++++++ .../AuthJwtConfigAutoConfiguration.java | 37 ++++++++++++ kernel-d-jwt/jwt-api/pom.xml | 7 --- .../roses/kernel/jwt/api/JwtApi.java | 21 ------- .../roses/kernel/jwt/JwtTokenOperator.java | 27 --------- .../jwt-spring-boot-starter/README.md | 1 - kernel-d-jwt/jwt-spring-boot-starter/pom.xml | 29 ---------- .../main/resources/META-INF/spring.factories | 2 - kernel-d-jwt/pom.xml | 1 - .../socket-business-websocket/pom.xml | 2 +- .../websocket/server/WebSocketServer.java | 6 +- .../service/impl/CustomerServiceImpl.java | 6 +- .../user/service/impl/SysUserServiceImpl.java | 6 +- 19 files changed, 139 insertions(+), 136 deletions(-) rename kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java => kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthJwtTokenApi.java (55%) rename kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java => kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/AuthJwtContext.java (85%) rename {kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt => kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth}/api/expander/JwtConfigExpander.java (97%) rename {kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt => kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth}/api/pojo/payload/DefaultJwtPayload.java (97%) create mode 100644 kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/jwt/AuthJwtTokenService.java create mode 100644 kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/AuthJwtConfigAutoConfiguration.java delete mode 100644 kernel-d-jwt/jwt-spring-boot-starter/README.md delete mode 100644 kernel-d-jwt/jwt-spring-boot-starter/pom.xml delete mode 100644 kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories diff --git a/kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthJwtTokenApi.java similarity index 55% rename from kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java rename to kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthJwtTokenApi.java index e19ced6a2..58c6e72b2 100644 --- a/kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthJwtTokenApi.java @@ -22,42 +22,36 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.jwt.starter; +package cn.stylefeng.roses.kernel.auth.api; -import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator; -import cn.stylefeng.roses.kernel.jwt.api.JwtApi; -import cn.stylefeng.roses.kernel.jwt.api.expander.JwtConfigExpander; -import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; /** - * jwt的自动配置 + * Auth模块对jwt的使用的封装 * * @author fengshuonan - * @since 2020/12/1 14:34 + * @since 2023/5/9 10:04 */ -@Configuration -public class GunsJwtAutoConfiguration { +public interface AuthJwtTokenApi { /** - * jwt操作工具类的配置 + * 生成token,用默认的payload格式 * + * @param defaultJwtPayload jwt的载体信息 + * @return jwt token * @author fengshuonan - * @since 2020/12/1 14:40 + * @since 2020/10/21 11:38 */ - @Bean - @ConditionalOnMissingBean(JwtApi.class) - public JwtApi jwtApi() { + String generateTokenDefaultPayload(DefaultJwtPayload defaultJwtPayload); - JwtConfig jwtConfig = new JwtConfig(); - - // 从系统配置表中读取配置 - jwtConfig.setJwtSecret(JwtConfigExpander.getJwtSecret()); - jwtConfig.setExpiredSeconds(JwtConfigExpander.getJwtTimeoutSeconds()); - - return new JwtTokenOperator(jwtConfig); - } + /** + * 获取jwt的payload(限定默认格式) + * + * @param token jwt的token + * @return 返回默认格式的payload + * @author fengshuonan + * @since 2020/10/21 11:51 + */ + DefaultJwtPayload getDefaultPayload(String token); } diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java index 7af51c8d2..6b9d0e935 100644 --- a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java @@ -29,7 +29,7 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginWithTokenRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; /** * 认证服务的接口,包括基本的登录退出操作和校验token等操作 diff --git a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/AuthJwtContext.java similarity index 85% rename from kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java rename to kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/AuthJwtContext.java index 9d892af8b..35e411c0c 100644 --- a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/AuthJwtContext.java @@ -22,10 +22,10 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.jwt.api.context; +package cn.stylefeng.roses.kernel.auth.api.context; import cn.hutool.extra.spring.SpringUtil; -import cn.stylefeng.roses.kernel.jwt.api.JwtApi; +import cn.stylefeng.roses.kernel.auth.api.AuthJwtTokenApi; /** * Jwt工具的context,获取容器中的jwt工具类 @@ -33,7 +33,7 @@ import cn.stylefeng.roses.kernel.jwt.api.JwtApi; * @author fengshuonan * @since 2020/10/21 14:07 */ -public class JwtContext { +public class AuthJwtContext { /** * 获取jwt操作接口 @@ -41,8 +41,8 @@ public class JwtContext { * @author fengshuonan * @since 2020/10/21 14:07 */ - public static JwtApi me() { - return SpringUtil.getBean(JwtApi.class); + public static AuthJwtTokenApi me() { + return SpringUtil.getBean(AuthJwtTokenApi.class); } } diff --git a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/JwtConfigExpander.java similarity index 97% rename from kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java rename to kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/JwtConfigExpander.java index 4da93569a..31bbd6897 100644 --- a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/JwtConfigExpander.java @@ -22,7 +22,7 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.jwt.api.expander; +package cn.stylefeng.roses.kernel.auth.api.expander; import cn.hutool.core.util.RandomUtil; import cn.stylefeng.roses.kernel.config.api.context.ConfigContext; diff --git a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/payload/DefaultJwtPayload.java similarity index 97% rename from kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java rename to kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/payload/DefaultJwtPayload.java index 097c7a5e7..2d78c41da 100644 --- a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/payload/DefaultJwtPayload.java @@ -22,7 +22,7 @@ * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ -package cn.stylefeng.roses.kernel.jwt.api.pojo.payload; +package cn.stylefeng.roses.kernel.auth.api.pojo.payload; import cn.hutool.core.util.IdUtil; import lombok.Data; diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java index 4ef63eac3..728a8b1df 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java @@ -40,6 +40,7 @@ import cn.stylefeng.roses.kernel.auth.api.SsoServerApi; import cn.stylefeng.roses.kernel.auth.api.TempSecretApi; import cn.stylefeng.roses.kernel.auth.api.constants.AuthConstants; import cn.stylefeng.roses.kernel.auth.api.constants.LoginCacheConstants; +import cn.stylefeng.roses.kernel.auth.api.context.AuthJwtContext; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.enums.SsoClientTypeEnum; import cn.stylefeng.roses.kernel.auth.api.exception.AuthException; @@ -51,6 +52,7 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginWithTokenRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.auth.api.pojo.sso.SsoLoginCodeRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.sso.SsoProperties; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; @@ -58,11 +60,10 @@ import cn.stylefeng.roses.kernel.demo.expander.DemoConfigExpander; import cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants; import cn.stylefeng.roses.kernel.dsctn.api.context.CurrentDataSourceContext; import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator; -import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext; +import cn.stylefeng.roses.kernel.jwt.api.JwtApi; import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException; import cn.stylefeng.roses.kernel.jwt.api.exception.enums.JwtExceptionEnum; import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.log.api.LoginLogServiceApi; import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander; import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; @@ -130,6 +131,9 @@ public class AuthServiceImpl implements AuthServiceApi { @Resource(name = "caClientTokenCacheApi") private CacheOperatorApi caClientTokenCacheApi; + @Resource + private JwtApi jwtApi; + @Override public LoginResponse login(LoginRequest loginRequest) { return loginAction(loginRequest, true, null); @@ -225,10 +229,10 @@ public class AuthServiceImpl implements AuthServiceApi { public DefaultJwtPayload validateToken(String token) throws AuthException { try { // 1. 先校验jwt token本身是否有问题 - JwtContext.me().validateTokenWithException(token); + jwtApi.validateTokenWithException(token); // 2. 获取jwt的payload - DefaultJwtPayload defaultPayload = JwtContext.me().getDefaultPayload(token); + DefaultJwtPayload defaultPayload = AuthJwtContext.me().getDefaultPayload(token); // 3. 如果是7天免登陆,则不校验session过期 if (defaultPayload.getRememberMe()) { @@ -412,7 +416,7 @@ public class AuthServiceImpl implements AuthServiceApi { // 9. 生成用户的token DefaultJwtPayload defaultJwtPayload = new DefaultJwtPayload(loginUser.getUserId(), loginUser.getAccount(), loginRequest.getRememberMe(), caToken, loginRequest.getTenantCode()); - String jwtToken = JwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); + String jwtToken = AuthJwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); loginUser.setToken(jwtToken); // 如果包含租户编码,则放到loginUser中 diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/jwt/AuthJwtTokenService.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/jwt/AuthJwtTokenService.java new file mode 100644 index 000000000..362581c57 --- /dev/null +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/jwt/AuthJwtTokenService.java @@ -0,0 +1,56 @@ +package cn.stylefeng.roses.kernel.auth.jwt; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.stylefeng.roses.kernel.auth.api.AuthJwtTokenApi; +import cn.stylefeng.roses.kernel.auth.api.expander.JwtConfigExpander; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; +import cn.stylefeng.roses.kernel.jwt.api.JwtApi; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Map; + +/** + * Auth模块对JWT token的使用 + * + * @author fengshuonan + * @since 2023/5/9 10:05 + */ +@Service +public class AuthJwtTokenService implements AuthJwtTokenApi { + + @Resource + private JwtApi jwtApi; + + @Override + public String generateTokenDefaultPayload(DefaultJwtPayload defaultJwtPayload) { + + // 计算过期时间 + DateTime expirationDate = DateUtil.offsetSecond(new Date(), Convert.toInt(JwtConfigExpander.getJwtTimeoutSeconds())); + + // 设置过期时间 + defaultJwtPayload.setExpirationDate(expirationDate.getTime()); + + // 构造jwt token + return Jwts.builder() + .setClaims(BeanUtil.beanToMap(defaultJwtPayload)) + .setSubject(defaultJwtPayload.getUserId().toString()) + .setIssuedAt(new Date()) + .setExpiration(expirationDate) + .signWith(SignatureAlgorithm.HS512, JwtConfigExpander.getJwtSecret()) + .compact(); + } + + @Override + public DefaultJwtPayload getDefaultPayload(String token) { + Map jwtPayload = jwtApi.getJwtPayloadClaims(token); + return BeanUtil.toBeanIgnoreError(jwtPayload, DefaultJwtPayload.class); + } + +} diff --git a/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/AuthJwtConfigAutoConfiguration.java b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/AuthJwtConfigAutoConfiguration.java new file mode 100644 index 000000000..8dec77bce --- /dev/null +++ b/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/AuthJwtConfigAutoConfiguration.java @@ -0,0 +1,37 @@ +package cn.stylefeng.roses.kernel.auth.starter; + +import cn.stylefeng.roses.kernel.auth.api.expander.JwtConfigExpander; +import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator; +import cn.stylefeng.roses.kernel.jwt.api.JwtApi; +import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Auth模块对jwt的封装 + * + * @author fengshuonan + * @since 2023/5/9 10:07 + */ +@Configuration +public class AuthJwtConfigAutoConfiguration { + + /** + * jwt操作工具类的配置 + * + * @author fengshuonan + * @since 2020/12/1 14:40 + */ + @Bean + public JwtApi jwtApi() { + + JwtConfig jwtConfig = new JwtConfig(); + + // 从系统配置表中读取配置 + jwtConfig.setJwtSecret(JwtConfigExpander.getJwtSecret()); + jwtConfig.setExpiredSeconds(JwtConfigExpander.getJwtTimeoutSeconds()); + + return new JwtTokenOperator(jwtConfig); + } + +} diff --git a/kernel-d-jwt/jwt-api/pom.xml b/kernel-d-jwt/jwt-api/pom.xml index 980d2f9d5..75486b81a 100644 --- a/kernel-d-jwt/jwt-api/pom.xml +++ b/kernel-d-jwt/jwt-api/pom.xml @@ -17,13 +17,6 @@ - - - cn.stylefeng.roses - config-api - ${roses.version} - - io.jsonwebtoken diff --git a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java b/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java index 56664fa9c..75749201c 100644 --- a/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java +++ b/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java @@ -25,7 +25,6 @@ package cn.stylefeng.roses.kernel.jwt.api; import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import java.util.Map; @@ -47,16 +46,6 @@ public interface JwtApi { */ String generateToken(Map payload); - /** - * 生成token,用默认的payload格式 - * - * @param defaultJwtPayload jwt的载体信息 - * @return jwt token - * @author fengshuonan - * @since 2020/10/21 11:38 - */ - String generateTokenDefaultPayload(DefaultJwtPayload defaultJwtPayload); - /** * 获取jwt的payload(通用的) * @@ -67,16 +56,6 @@ public interface JwtApi { */ Map getJwtPayloadClaims(String token); - /** - * 获取jwt的payload(限定默认格式) - * - * @param token jwt的token - * @return 返回默认格式的payload - * @author fengshuonan - * @since 2020/10/21 11:51 - */ - DefaultJwtPayload getDefaultPayload(String token); - /** * 校验jwt token是否正确 *

diff --git a/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java b/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java index 9385591dd..d93b6c010 100644 --- a/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java +++ b/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java @@ -24,7 +24,6 @@ */ package cn.stylefeng.roses.kernel.jwt; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; @@ -32,7 +31,6 @@ import cn.stylefeng.roses.kernel.jwt.api.JwtApi; import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException; import cn.stylefeng.roses.kernel.jwt.api.exception.enums.JwtExceptionEnum; import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; @@ -72,25 +70,6 @@ public class JwtTokenOperator implements JwtApi { .compact(); } - @Override - public String generateTokenDefaultPayload(DefaultJwtPayload defaultJwtPayload) { - - // 计算过期时间 - DateTime expirationDate = DateUtil.offsetSecond(new Date(), Convert.toInt(jwtConfig.getExpiredSeconds())); - - // 设置过期时间 - defaultJwtPayload.setExpirationDate(expirationDate.getTime()); - - // 构造jwt token - return Jwts.builder() - .setClaims(BeanUtil.beanToMap(defaultJwtPayload)) - .setSubject(defaultJwtPayload.getUserId().toString()) - .setIssuedAt(new Date()) - .setExpiration(expirationDate) - .signWith(SignatureAlgorithm.HS512, jwtConfig.getJwtSecret()) - .compact(); - } - @Override public Claims getJwtPayloadClaims(String token) { return Jwts.parser() @@ -99,12 +78,6 @@ public class JwtTokenOperator implements JwtApi { .getBody(); } - @Override - public DefaultJwtPayload getDefaultPayload(String token) { - Map jwtPayload = getJwtPayloadClaims(token); - return BeanUtil.toBeanIgnoreError(jwtPayload, DefaultJwtPayload.class); - } - @Override public boolean validateToken(String token) { try { diff --git a/kernel-d-jwt/jwt-spring-boot-starter/README.md b/kernel-d-jwt/jwt-spring-boot-starter/README.md deleted file mode 100644 index d351cf9f1..000000000 --- a/kernel-d-jwt/jwt-spring-boot-starter/README.md +++ /dev/null @@ -1 +0,0 @@ -jwt功能的spring boot自动加载模块 \ No newline at end of file diff --git a/kernel-d-jwt/jwt-spring-boot-starter/pom.xml b/kernel-d-jwt/jwt-spring-boot-starter/pom.xml deleted file mode 100644 index 5f4df812b..000000000 --- a/kernel-d-jwt/jwt-spring-boot-starter/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - cn.stylefeng.roses - kernel-d-jwt - 7.6.0 - ../pom.xml - - - jwt-spring-boot-starter - - jar - - - - - - cn.stylefeng.roses - jwt-sdk - ${roses.version} - - - - - diff --git a/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index cf7f71dc0..000000000 --- a/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - cn.stylefeng.roses.kernel.jwt.starter.GunsJwtAutoConfiguration \ No newline at end of file diff --git a/kernel-d-jwt/pom.xml b/kernel-d-jwt/pom.xml index c02bedae4..da1a0b2c3 100644 --- a/kernel-d-jwt/pom.xml +++ b/kernel-d-jwt/pom.xml @@ -18,7 +18,6 @@ jwt-api jwt-sdk - jwt-spring-boot-starter diff --git a/kernel-d-socket/socket-business-websocket/pom.xml b/kernel-d-socket/socket-business-websocket/pom.xml index 84d584ecf..4a38164da 100644 --- a/kernel-d-socket/socket-business-websocket/pom.xml +++ b/kernel-d-socket/socket-business-websocket/pom.xml @@ -37,7 +37,7 @@ cn.stylefeng.roses - jwt-sdk + auth-api ${roses.version} diff --git a/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java b/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java index ee09c278a..8a0428cf9 100644 --- a/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java +++ b/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java @@ -1,8 +1,8 @@ package cn.stylefeng.roses.kernel.socket.business.websocket.server; import cn.hutool.core.util.ObjectUtil; -import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; +import cn.stylefeng.roses.kernel.auth.api.context.AuthJwtContext; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.socket.api.enums.ClientMessageTypeEnum; import cn.stylefeng.roses.kernel.socket.api.enums.ServerMessageTypeEnum; import cn.stylefeng.roses.kernel.socket.api.enums.SystemMessageTypeEnum; @@ -46,7 +46,7 @@ public class WebSocketServer { String userId = null; try { // 解析用户信息 - DefaultJwtPayload defaultPayload = JwtContext.me().getDefaultPayload(token); + DefaultJwtPayload defaultPayload = AuthJwtContext.me().getDefaultPayload(token); userId = defaultPayload.getUserId().toString(); } catch (io.jsonwebtoken.JwtException e) { try { diff --git a/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java b/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java index 69d08e3fc..d68415a79 100644 --- a/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java +++ b/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; +import cn.stylefeng.roses.kernel.auth.api.context.AuthJwtContext; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.exception.AuthException; import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum; @@ -16,6 +17,7 @@ import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.customer.api.OldPasswordValidateApi; import cn.stylefeng.roses.kernel.customer.api.constants.CustomerConstants; @@ -37,8 +39,6 @@ import cn.stylefeng.roses.kernel.email.api.pojo.SendMailParam; import cn.stylefeng.roses.kernel.file.api.FileInfoApi; import cn.stylefeng.roses.kernel.file.api.FileOperatorApi; import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse; -import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.log.api.LoginLogServiceApi; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; @@ -202,7 +202,7 @@ public class CustomerServiceImpl extends ServiceImpl i // 生成用户的token DefaultJwtPayload defaultJwtPayload = new DefaultJwtPayload(loginUser.getUserId(), loginUser.getAccount(), loginRequest.getRememberMe(), null, null); - String jwtToken = JwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); + String jwtToken = AuthJwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); loginUser.setToken(jwtToken); synchronized (SESSION_OPERATE_LOCK) { diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java index 40a67715d..ac7d673f5 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java @@ -31,6 +31,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; import cn.stylefeng.roses.kernel.auth.api.constants.LoginCacheConstants; +import cn.stylefeng.roses.kernel.auth.api.context.AuthJwtContext; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum; import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum; @@ -38,6 +39,7 @@ import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo; +import cn.stylefeng.roses.kernel.auth.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; @@ -45,8 +47,6 @@ import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.expand.modular.api.ExpandApi; import cn.stylefeng.roses.kernel.file.api.FileInfoApi; import cn.stylefeng.roses.kernel.file.api.constants.FileConstants; -import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext; -import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander; import cn.stylefeng.roses.kernel.office.api.OfficeExcelApi; import cn.stylefeng.roses.kernel.office.api.pojo.report.ExcelExportParam; @@ -689,7 +689,7 @@ public class SysUserServiceImpl extends ServiceImpl impl // 生成用户的token DefaultJwtPayload defaultJwtPayload = new DefaultJwtPayload(loginUser.getUserId(), loginUser.getAccount(), false, null, null); - String jwtToken = JwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); + String jwtToken = AuthJwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); loginUser.setToken(jwtToken); synchronized (this) {