package com.pty.sso.service.custom;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.client.RestTemplate;
import com.pty.sso.api.SsoInfo;
import com.pty.sso.common.KeyGenerator;
import com.pty.sso.service.TokenServiceImpl;
import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("unchecked")
@Slf4j
@Service
@CrossOrigin
@ConditionalOnProperty(value = "pty.sso.type", havingValue = "zhangzhou")
public class ZhangZhouTokenServiceImpl extends TokenServiceImpl {
@Value("${pty.sso.ssoUri}")
private String ssoUri;
private RestTemplate restTemplate;
@PostConstruct
private void init() {
restTemplate = new RestTemplateBuilder().build();
}
@Override
public String generateToken(SsoInfo ssoInfo) {
if (ssoInfo.getIp() == null) {
String url = String.format(ssoUri + "/ssos/doLogin?userCode=%s", ssoInfo.getUserCode());
String token = restTemplate.getForObject(url, String.class);
log.info("系统登录生成的token :{}", token);
return token;
} else {
return super.generateToken(ssoInfo);
}
}
@Override
public String getUserCode(SsoInfo requestInfo) {
String reqToken = requestInfo.getToken();
String uuid = requestInfo.getUuid();
String userCode = requestInfo.getUserCode();
log.info("校验的reqToken :{}, uuid :{}", reqToken, uuid);
try {
String url = String.format(ssoUri + "/ssos/tokenCheck?reqToken=%s&userCode=%s", reqToken, userCode);
log.info("checktoken url->{}", url);
String userID = restTemplate.getForObject(url, String.class);
log.info("校验的用户名" + userID);
if (!"".equals(userID) && userID != null) {
return userID;
} else {
throw new RuntimeException("userID 为空");
}
} catch (Exception ex) {
throw new RuntimeException("获取用户信息失败");
}
}
}
漳州单点备份
最新推荐文章于 2020-06-02 22:08:18 发布