From eec82464990ba18ba7d643a6e2e743d09af4b8ea Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 26 Mar 2021 14:08:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96token=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E7=BB=93=E6=9E=9C=E5=B0=81=E8=A3=85=E6=88=90?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/security/jwt/JwtUtils.java | 19 +++++++++++++++++++ .../sign/openapi/OpenApiSignUtils.java | 4 ++-- .../openapi/GetAccessTokenResultDTO.java | 12 ++++++++++++ .../OpenApiAccessTokenController.java | 7 ++++--- .../service/OpenApiAccessTokenService.java | 4 +++- .../impl/OpenApiAccessTokenServiceImpl.java | 15 +++++++++++---- 6 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java diff --git a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java index 23b738d623..8df0b6cd8f 100644 --- a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java +++ b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java @@ -78,6 +78,25 @@ public class JwtUtils { .compact(); } + /** + * @Description 创建Token + * @return Token + * @param claims 载荷信息 + * @param expireTime 过期时间 + * @param secret 秘钥 + * @author wxz + * @date 2021.03.26 13:33 + */ + public String createToken(Map claims, Date expireTime, String secret) { + return Jwts.builder() + .setHeaderParam("typ", "JWT") + .setClaims(claims) + .setIssuedAt(new Date()) + .setExpiration(expireTime) + .signWith(SignatureAlgorithm.HS512, secret) + .compact(); + } + /** * token是否过期 * diff --git a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java index ef3e31f6aa..f96a3777bb 100644 --- a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java +++ b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java @@ -60,8 +60,8 @@ public class OpenApiSignUtils { } public static void main(String[] args) { - //generateGetAccessTokenSign(); - generateGetOrgDetailSign(); + generateGetAccessTokenSign(); + //generateGetOrgDetailSign(); } private static void generateGetAccessTokenSign() { diff --git a/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java b/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java new file mode 100644 index 0000000000..a913b25945 --- /dev/null +++ b/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java @@ -0,0 +1,12 @@ +package com.epmet.dto.result.openapi; + +import lombok.Data; + +@Data +public class GetAccessTokenResultDTO { + + private String accessToken; + + private Long expireTime; + +} diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java index 587dd99318..27c44ae532 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java @@ -7,6 +7,7 @@ import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.openapi.OpenApiBaseFormDTO; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.OpenApiAccessTokenService; import org.apache.commons.lang3.StringUtils; @@ -38,7 +39,7 @@ public class OpenApiAccessTokenController { */ @OpenApiCheckSign @PostMapping("get-access-token") - public Result getAccessToken(@RequestParam("app_id") String appId) { + public Result getAccessToken(@RequestParam("app_id") String appId) { // 1.取secret String secret = (String)redisUtils.get(RedisKeys.getExternalAppSecretKey(appId)); if (StringUtils.isBlank(secret)) { @@ -54,8 +55,8 @@ public class OpenApiAccessTokenController { } //2.生成token - String accessToken = openApiAccessTokenService.getAccessToken(appId, secret); - return new Result().ok(accessToken); + GetAccessTokenResultDTO content = openApiAccessTokenService.getAccessToken(appId, secret); + return new Result().ok(content); } } diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java index 56c3bd4630..2b6d362636 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java @@ -1,5 +1,7 @@ package com.epmet.service; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; + /** * access token的service */ @@ -11,5 +13,5 @@ public interface OpenApiAccessTokenService { * @author wxz * @date 2021.03.22 22:57 */ - String getAccessToken(String appId, String secret); + GetAccessTokenResultDTO getAccessToken(String appId, String secret); } diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java index b00e5ca6d9..fad64083db 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java @@ -4,11 +4,14 @@ import com.epmet.commons.security.jwt.JwtUtils; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.config.OpenApiConfig; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; import com.epmet.openapi.constant.RequestParamKeys; import com.epmet.service.OpenApiAccessTokenService; +import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.HashMap; @Service @@ -24,15 +27,19 @@ public class OpenApiAccessTokenServiceImpl implements OpenApiAccessTokenService private RedisUtils redisUtils; @Override - public String getAccessToken(String appId, String secret) { + public GetAccessTokenResultDTO getAccessToken(String appId, String secret) { HashMap claim = new HashMap<>(); claim.put(RequestParamKeys.APP_ID, appId); - String token = jwtTokenUtils.createToken(claim, openApiConfig.getAccessTokenExpire(), secret); - + Date expireTime = DateTime.now().plusSeconds(openApiConfig.getAccessTokenExpire()).toDate(); + String token = jwtTokenUtils.createToken(claim, expireTime, secret); // 缓存token redisUtils.set(RedisKeys.getOpenApiAccessTokenKey(appId), token, openApiConfig.getAccessTokenExpire()); - return token; + GetAccessTokenResultDTO content = new GetAccessTokenResultDTO(); + content.setAccessToken(token); + content.setExpireTime(expireTime.getTime()); + + return content; } }