package com.dy.common.aop; import com.dy.common.webUtil.BaseResponseUtils; import com.mysql.cj.util.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; /** * @Author: liurunyu * @Date: 2025/7/22 17:09 * @Description */ @Component public class SsoCheck { @Value("${pipIrr.sso.checkUrl}") private String ssoCheckUrl; private RestTemplate restTemplate; @Autowired public void setRestTemplate(RestTemplate restTemplate){ this.restTemplate = restTemplate ; } /** * 调用SSO系统进行验证 * @param token Header中的用户token * @return 返回对象 */ public Object check(String token){ if(!StringUtils.isNullOrEmpty(ssoCheckUrl)){ String url = UriComponentsBuilder.fromUriString(ssoCheckUrl) .queryParam("token", token) .build() .toUriString(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8")); HttpEntity httpEntity = new HttpEntity<>(headers); ResponseEntity response = null; try { // 通过Get方式调用接口 response = this.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"); } } /** * 调用SSO系统进行验证 * @param token Header中的用户token * @param power 一个权限 * @param allPower 多个权限 * @param anyPower 多个权限 * @return 返回对象 */ public 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 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"); } } }