diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java index f07e708d9..01c627431 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java @@ -8,13 +8,11 @@ import com.ruoyi.system.api.domain.SysUserDeptRole; import com.ruoyi.system.api.factory.RemoteUserFallbackFactory; import com.ruoyi.system.api.model.LoginUser; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Set; -@Component @FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) public interface RemoteUserService { /** diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java index ccff2ec6f..819953cc5 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java @@ -24,39 +24,44 @@ public class FeignRequestInterceptor implements RequestInterceptor public void apply(RequestTemplate requestTemplate) { HttpServletRequest httpServletRequest = ServletUtils.getRequest(); + Map headers = null; if (StringUtils.isNotNull(httpServletRequest)) { - Map headers = ServletUtils.getHeaders(httpServletRequest); - // 传递用户信息请求头,防止丢失 - setHeader(requestTemplate - , SecurityConstants.DETAILS_USER_ID - , headers.get(SecurityConstants.DETAILS_USER_ID) - , String.valueOf(SecurityUtils.getUserId())); - setHeader(requestTemplate - , SecurityConstants.USER_KEY - , headers.get(SecurityConstants.USER_KEY) - , SecurityUtils.getUserKey()); - setHeader(requestTemplate - , SecurityConstants.DETAILS_USERNAME - , headers.get(SecurityConstants.DETAILS_USERNAME) - , SecurityUtils.getUsername()); - setHeader(requestTemplate - , SecurityConstants.AUTHORIZATION_HEADER - , headers.get(SecurityConstants.AUTHORIZATION_HEADER) - , null); - setHeader(requestTemplate - , SecurityConstants.DEPT_ID - , headers.get(SecurityConstants.DEPT_ID) - , String.valueOf(SecurityUtils.getDeptId())); - + headers = ServletUtils.getHeaders(httpServletRequest); // 配置客户端IP requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr()); } + // 传递用户信息请求头,防止丢失 + setHeader(requestTemplate + , headers + , SecurityConstants.DETAILS_USER_ID + , String.valueOf(SecurityUtils.getUserId())); + setHeader(requestTemplate + , headers + , SecurityConstants.USER_KEY + , SecurityUtils.getUserKey()); + setHeader(requestTemplate + , headers + , SecurityConstants.DETAILS_USERNAME + , SecurityUtils.getUsername()); + setHeader(requestTemplate + , headers + , SecurityConstants.AUTHORIZATION_HEADER + , null); + setHeader(requestTemplate + , headers + , SecurityConstants.DEPT_ID + , String.valueOf(SecurityUtils.getDeptId())); } - private void setHeader(RequestTemplate requestTemplate, String key, String headerValue, String cacheValue) { - if (StringUtils.isNotEmpty(headerValue)) { - requestTemplate.header(key, headerValue); + private void setHeader(RequestTemplate requestTemplate, Map headers, String key, String cacheValue) { + if (headers != null) { + String headerValue = headers.get(key); + if (StringUtils.isNotEmpty(headerValue)) { + requestTemplate.header(key, headerValue); + } else if (StringUtils.isNotEmpty(cacheValue)) { + requestTemplate.header(key, cacheValue); + } } else if (StringUtils.isNotEmpty(cacheValue)) { requestTemplate.header(key, cacheValue); } diff --git a/ruoyi-modules/ruoyi-zone/src/main/java/com/ruoyi/zone/member/service/impl/ZoneMemberServiceImpl.java b/ruoyi-modules/ruoyi-zone/src/main/java/com/ruoyi/zone/member/service/impl/ZoneMemberServiceImpl.java index f738fcdaf..b1f810a70 100644 --- a/ruoyi-modules/ruoyi-zone/src/main/java/com/ruoyi/zone/member/service/impl/ZoneMemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-zone/src/main/java/com/ruoyi/zone/member/service/impl/ZoneMemberServiceImpl.java @@ -156,6 +156,8 @@ public class ZoneMemberServiceImpl implements IZoneMemberService { if (sysUserDeptRoleList != null) { hasRoleInZone = sysUserDeptRoleList.stream().anyMatch(x -> zoneDetail.getDeptId().equals(x.getDeptId())); } + String userKey = SecurityUtils.getUserKey(); + System.out.println(userKey); // 当用户在专区下没有其他角色时才需要赋予会员身份 if (!hasRoleInZone) { boolean addUserIdentify = Boolean.TRUE.equals(FeignUtils.getReturnData(