| | |
| | | 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(); |
| | | 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(); |
| | | return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); |
| | | } |
| | | if(response == null){ |
| | | return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); |
| | | }else{ |
| | | return response.getBody(); |
| | | } |
| | | }else { |
| | | return BaseResponseUtils.buildError("后端系统出错,未得到SsoCheckUrl"); |
| | | } |
| | | } |
| | | |
| | | } |