|  |  | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.core.annotation.Order; | 
 |  |  | import org.springframework.http.HttpEntity; | 
 |  |  | import org.springframework.http.HttpHeaders; | 
 |  |  | import org.springframework.http.HttpMethod; | 
 |  |  | import org.springframework.http.ResponseEntity; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  | import org.springframework.web.client.RestTemplate; | 
 |  |  | import org.springframework.web.util.UriComponentsBuilder; | 
 |  |  |  | 
 |  |  | import java.lang.reflect.Method; | 
 |  |  | import java.util.Objects; | 
 |  |  | 
 |  |  |     @Value("${pipIrr.global.dev}") | 
 |  |  |     public String isDevStage ;//是否为开发阶段 | 
 |  |  |  | 
 |  |  |     @Value("${pipIrr.sso.checkUrl}") | 
 |  |  |     public String SsoCheckUrl ; | 
 |  |  |  | 
 |  |  |     private RestTemplate restTemplate; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     public void setRestTemplate(RestTemplate restTemplate){ | 
 |  |  |         this.restTemplate = restTemplate ; | 
 |  |  |     } | 
 |  |  |     private SsoCheck ssoCheck ; | 
 |  |  |  | 
 |  |  |     @Pointcut("@annotation(com.dy.common.aop.SsoPowerAop)") | 
 |  |  |     public void ssoPowerPointCut() { | 
 |  |  | 
 |  |  |                     String[] allPower = aop.ifAllPower() ; | 
 |  |  |                     String[] anyPower = aop.ifAnyPower() ; | 
 |  |  |                     String token = UserTokenContext.get() ; | 
 |  |  |                     Object rObj = this.check(token, power, allPower, anyPower); | 
 |  |  |                     Object rObj = this.ssoCheck.check(token, power, allPower, anyPower); | 
 |  |  |                     if(rObj != null){ | 
 |  |  |                         if(rObj instanceof SsoVo ssoVo){ | 
 |  |  |                             if(ssoVo.logined){ | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 调用SSO系统进行验证 | 
 |  |  |      * @param token Header中的用户token | 
 |  |  |      * @param power 一个权限 | 
 |  |  |      * @param allPower 多个权限 | 
 |  |  |      * @param anyPower 多个权限 | 
 |  |  |      * @return 返回对象 | 
 |  |  |      */ | 
 |  |  |     private Object check(String token, String power, String[] allPower, String[] anyPower){ | 
 |  |  |         if(!StringUtils.isNullOrEmpty(SsoCheckUrl)){ | 
 |  |  |             String url = UriComponentsBuilder.fromUriString(SsoCheckUrl) | 
 |  |  |                     .queryParam("token", token) | 
 |  |  |                     .queryParam("power", power) | 
 |  |  |                     .queryParam("allPower", (Object) allPower) | 
 |  |  |                     .queryParam("anyPower", (Object) anyPower) | 
 |  |  |                     .build() | 
 |  |  |                     .toUriString(); | 
 |  |  |             // 由于获取student接口咱们设置了basicauth,所以需要在请求时配置 | 
 |  |  |             HttpHeaders headers = new HttpHeaders(); | 
 |  |  |             HttpEntity<?> httpEntity = new HttpEntity<>(headers); | 
 |  |  |             ResponseEntity<SsoVo> response = null; | 
 |  |  |             try { | 
 |  |  |                 // 通过Get方式调用接口 | 
 |  |  |                 response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, SsoVo.class); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 |  |  |             assert response != null; | 
 |  |  |             return response.getBody(); | 
 |  |  |         }else { | 
 |  |  |             return BaseResponseUtils.buildError("后端系统出错,未得到SsoCheckUrl"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |