From 7ebfa2e67f3c69a6973aa2cbf46a9c493c311010 Mon Sep 17 00:00:00 2001 From: liyj <1003249715@qq.com> Date: Sat, 17 Aug 2024 16:00:37 +0800 Subject: [PATCH] 1、get忽略target文件夹 2、jwt优化 --- dyh-service/dyh-cust/src/main/resources/config/application.yml | 2 .gitignore | 2 dyh-gateway/src/main/resources/config/application.yml | 2 dyh-service/dyh-cust/src/main/java/cn/huge/module/utils/JwtUtils.java | 43 ++++---------- dyh-service/dyh-cust/src/test/java/cn/huge/module/DyhCustApplicationTest.java | 1 dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java | 75 ++++++++++-------------- 6 files changed, 51 insertions(+), 74 deletions(-) diff --git a/.gitignore b/.gitignore index a6514fb..a0aad76 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,6 @@ dyh-service/dyh-sys/target/ dyh-service/dyh-utils/logs/ dyh-service/dyh-utils/target/ +dyh-service/dyh-sync/logs/ +dyh-service/dyh-sync/target/ logs/ diff --git a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java index f4829ee..bf68357 100644 --- a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java +++ b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java @@ -46,16 +46,14 @@ @Value("${jwt.secret-key}") private String secretKey; + @Value("${jwt.iss_user.format}") + private String issUser; + @Value("${jwt.auth-skip-urls}") private String[] skipAuthUrls; @Value("${jwt.blacklist-key.format}") private String jwtBlacklistKeyFormat; - - /** - * jwt用户 - */ - private static String ISSUSER = "HUGEINFO"; @Override public int getOrder() { @@ -89,52 +87,43 @@ if (status) { return chain.filter(exchange); } else { - // todo 运营中心暂时写死token - if (url.indexOf("dyh-oper") != -1) { - String userId = "10001"; - ServerHttpRequest mutableReq = null; - exchange.getRequest().mutate().header("Authorization-userId", userId).build(); - ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build(); - return chain.filter(mutableExchange); + //从请求头中取出token + String token = exchange.getRequest().getHeaders().getFirst("Authorization"); + //未携带token或token在黑名单内 + if (StringUtils.isEmpty(token) || isBlackToken(token)) { + ServerHttpResponse originalResponse = exchange.getResponse(); + originalResponse.setStatusCode(HttpStatus.OK); + originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8"); + byte[] response = "{\"code\": \"401\",\"msg\": \"用户未登录,请进行登录!\"}" + .getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = originalResponse.bufferFactory().wrap(response); + return originalResponse.writeWith(Flux.just(buffer)); } else { - //从请求头中取出token - String token = exchange.getRequest().getHeaders().getFirst("Authorization"); - //未携带token或token在黑名单内 - if (StringUtils.isEmpty(token) || isBlackToken(token)) { + //取出token包含的身份 + Map<String, Object> result = verifyJWT(token); + int code = (int) result.get("code"); + if (code != 0) { ServerHttpResponse originalResponse = exchange.getResponse(); originalResponse.setStatusCode(HttpStatus.OK); originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8"); - byte[] response = "{\"code\": \"401\",\"msg\": \"用户未登录,请进行登录!\"}" - .getBytes(StandardCharsets.UTF_8); + String responseResult = "{\"code\": \"" + code + "\", \"msg\": \"" + result.get("msg") + "\"}"; + byte[] response = responseResult.getBytes(StandardCharsets.UTF_8); DataBuffer buffer = originalResponse.bufferFactory().wrap(response); return originalResponse.writeWith(Flux.just(buffer)); } else { - //取出token包含的身份 - Map<String, Object> result = verifyJWT(token); - int code = (int) result.get("code"); - if (code != 0) { - ServerHttpResponse originalResponse = exchange.getResponse(); - originalResponse.setStatusCode(HttpStatus.OK); - originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8"); - String responseResult = "{\"code\": \"" + code + "\", \"msg\": \"" + result.get("msg") + "\"}"; - byte[] response = responseResult.getBytes(StandardCharsets.UTF_8); - DataBuffer buffer = originalResponse.bufferFactory().wrap(response); - return originalResponse.writeWith(Flux.just(buffer)); + //将现在的request,添加当前身份 + String userId = (String) result.get("userId"); + ServerHttpRequest mutableReq = null; + String custId = (String) result.get("custId"); + if (StringUtils.isNotEmpty(custId)) { + URI uri = exchange.getRequest().getURI(); + URI newUri = assembleUri(uri, custId); + exchange.getRequest().mutate().uri(newUri).header("Authorization-userId", userId).header("Authorization-custId", custId).build(); } else { - //将现在的request,添加当前身份 - String userId = (String) result.get("userId"); - ServerHttpRequest mutableReq = null; - String custId = (String) result.get("custId"); - if (StringUtils.isNotEmpty(custId)) { - URI uri = exchange.getRequest().getURI(); - URI newUri = assembleUri(uri, custId); - exchange.getRequest().mutate().uri(newUri).header("Authorization-userId", userId).header("Authorization-custId", custId).build(); - } else { - exchange.getRequest().mutate().header("Authorization-userId", userId).build(); - } - ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build(); - return chain.filter(mutableExchange); + exchange.getRequest().mutate().header("Authorization-userId", userId).build(); } + ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build(); + return chain.filter(mutableExchange); } } } @@ -151,7 +140,7 @@ try { Algorithm algorithm = Algorithm.HMAC256(secretKey); JWTVerifier verifier = JWT.require(algorithm) - .withIssuer(ISSUSER) + .withIssuer(issUser) .build(); DecodedJWT jwt = verifier.verify(token); String userId = jwt.getClaim("userId").asString(); diff --git a/dyh-gateway/src/main/resources/config/application.yml b/dyh-gateway/src/main/resources/config/application.yml index b617902..da3a3a2 100644 --- a/dyh-gateway/src/main/resources/config/application.yml +++ b/dyh-gateway/src/main/resources/config/application.yml @@ -39,6 +39,8 @@ jwt: #jwt生成密钥 secret-key: asdfghjkl + #用户 + iss_user: HUGEINFO refresh-token-key: #refreshToken 存储key format: JWT_REFRESH_TOKEN::%s diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/JwtUtils.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/utils/JwtUtils.java similarity index 82% rename from dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/JwtUtils.java rename to dyh-service/dyh-cust/src/main/java/cn/huge/module/utils/JwtUtils.java index fe18821..341efd9 100644 --- a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/JwtUtils.java +++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/utils/JwtUtils.java @@ -1,4 +1,4 @@ -package cn.huge.base.common.utils; +package cn.huge.module.utils; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; @@ -22,6 +22,11 @@ * jwt生成密钥 */ public static String secretKey; + + /** + * jwt生成密钥 + */ + public static String issUser; /** * token过期时间:4小时 @@ -48,6 +53,11 @@ secretKey = secret_Key; } + @Value("${jwt.iss_user}") + public void setIssUser(String iss_user) { + issUser = iss_user; + } + @Value("${jwt.token.expire-time}") public void setTokenExpireTime(long token_expire_time) { tokenExpireTime = token_expire_time; @@ -69,11 +79,6 @@ } /** - * jwt用户 - */ - private static String ISSUSER = "HUGEINFO"; - - /** * 生成token * @param userId 登录用户标识 * @return String @@ -83,7 +88,7 @@ Date now = new Date(); Algorithm algo = Algorithm.HMAC256(secretKey); String token = JWT.create() - .withIssuer(ISSUSER) + .withIssuer(issUser) .withIssuedAt(now) .withExpiresAt(new Date(now.getTime() + tokenExpireTime)) .withClaim("userId", userId) @@ -102,35 +107,13 @@ Date now = new Date(); Algorithm algo = Algorithm.HMAC256(secretKey); String token = JWT.create() - .withIssuer(ISSUSER) + .withIssuer(issUser) .withIssuedAt(now) .withExpiresAt(new Date(now.getTime() + tokenExpireTime)) .withClaim("custId", custId) .withClaim("userId", userId) .sign(algo); return token; - } - - /** - * 生成讯飞token - * @return - */ - public static String buildXfJWT(){ - //生成jwt - Date time = new Date(); - String secret = "D34F84C9963548A9BA4A70AD6D61A99E"; - String appId = "1000000001"; - Algorithm algorithm = Algorithm.HMAC256(secret); - String auth = JWT.create() - .withIssuer(appId) - .withClaim("time", time+"") - .sign(algorithm); - return "Bearer "+auth; - } - - public static void main(String[] args) { - String auth = buildXfJWT(); - System.out.println(auth); } } /** diff --git a/dyh-service/dyh-cust/src/main/resources/config/application.yml b/dyh-service/dyh-cust/src/main/resources/config/application.yml index c2f7f9c..1193643 100644 --- a/dyh-service/dyh-cust/src/main/resources/config/application.yml +++ b/dyh-service/dyh-cust/src/main/resources/config/application.yml @@ -65,6 +65,8 @@ jwt: #jwt生成密钥 secret-key: asdfghjkl + #用户 + iss_user: HUGEINFO refresh-token-key: #refreshToken 存储key format: JWT_REFRESH_TOKEN::%s diff --git a/dyh-service/dyh-cust/src/test/java/cn/huge/module/DyhCustApplicationTest.java b/dyh-service/dyh-cust/src/test/java/cn/huge/module/DyhCustApplicationTest.java index 3b0ccb0..c86e91f 100644 --- a/dyh-service/dyh-cust/src/test/java/cn/huge/module/DyhCustApplicationTest.java +++ b/dyh-service/dyh-cust/src/test/java/cn/huge/module/DyhCustApplicationTest.java @@ -1,6 +1,5 @@ package cn.huge.module; -import cn.huge.base.common.utils.JwtUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; -- Gitblit v1.8.0