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<SsoVo> 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<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");
|
}
|
}
|
}
|