From e1d8fef83f2d599b299f1056ecc9e170a0f53b56 Mon Sep 17 00:00:00 2001 From: ajaxfan <909938737@qq.com> Date: Mon, 17 May 2021 10:59:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9security=E6=9C=8D=E5=8A=A1fei?= =?UTF-8?q?gn=E8=B0=83=E7=94=A8=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=87=8D?= =?UTF-8?q?=E8=AF=95=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/starter/client/UserCenterClient.java | 2 +- .../starter/config/FeignClientConfiguration.java | 14 +++++++------- .../starter/filter/TokenAuthenticationFilter.java | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/client/UserCenterClient.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/client/UserCenterClient.java index 32a5a13..228a5a5 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/client/UserCenterClient.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/client/UserCenterClient.java @@ -22,7 +22,7 @@ public interface UserCenterClient { * @param fileId * @return */ - @RequestMapping(method = RequestMethod.GET, value = "v1/userinfo/get") + @RequestMapping(method = RequestMethod.GET, value = "v1/userinfo/get1") SecurityUser getUserInfo(); } diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/FeignClientConfiguration.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/FeignClientConfiguration.java index ada12d8..f65dcd5 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/FeignClientConfiguration.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/config/FeignClientConfiguration.java @@ -2,7 +2,6 @@ package com.chinaunicom.mall.ebtp.cloud.security.starter.config; import static feign.FeignException.errorStatus; -import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -34,6 +33,11 @@ public class FeignClientConfiguration { int status = response.status(); if (status >= 400 && status <= 500) {// 客户端异常,启用feign的重试机制 + try { + Thread.sleep(3000);// 设定重试延时 + } catch (InterruptedException e) { + log.error(e.getMessage()); + } return new RetryableException(response.status(), exception.getMessage(), response.request().httpMethod(), exception, retryAfter(), response.request()); } @@ -42,14 +46,10 @@ public class FeignClientConfiguration { } /** - * 延迟 n 秒后重试 - * - * @return + * @return 请求重试 */ private Date retryAfter() { - Calendar cal = GregorianCalendar.getInstance(); - - return cal.getTime(); + return GregorianCalendar.getInstance().getTime(); } } diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java index b8d7817..86fb34e 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/TokenAuthenticationFilter.java @@ -102,10 +102,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { */ private Authentication getAuthentication(final String token, final String currentRoleCode) { SecurityUser securityUser = client.getUserInfo(); - - log.info("TokenAuthenticationFilter: token [{}]", token); - log.info("TokenAuthenticationFilter: userid [{}]", securityUser.getUserId()); - + if (Objects.isNull(securityUser)) {// 对象为空, 则说明网络异常feign已熔断 throw new RemoteTimeoutException("90500"); } @@ -114,6 +111,9 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { throw new AccessDeniedException("90403"); } + log.info("TokenAuthenticationFilter: token [{}]", token); + log.info("TokenAuthenticationFilter: userid [{}]", securityUser.getUserId()); + // 根据当前角色设定权限列表 List authorities = Optional.ofNullable(securityUser.getAuthorityList()).map(list -> { return list.stream().filter(auth -> StringUtils.equals(auth.getRoleCode(), currentRoleCode))