提交 26d596ee authored 作者: zhoushaopan's avatar zhoushaopan

feat(根据ticket获取token的接口): 做了一个json的转换

做了一个json的转换
上级 24b39ef1
......@@ -59,6 +59,12 @@
<artifactId>httpclient</artifactId>
<version>4.5.4</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.5</version>
</dependency>
</dependencies>
<build>
......
......@@ -2,6 +2,7 @@ package com.tykj.zlbapp.subject.controller;
import com.alibaba.fastjson.JSONObject;
import com.tykj.zlbapp.subject.service.ZlbAppAuthService;
import com.tykj.zlbapp.subject.vo.TokenVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -31,18 +32,18 @@ public class ZlbAppController {
@GetMapping("/getAppTokenByTicketId")
@ApiOperation(value = "根据票据换取token", notes = "根据票据换取token")
public String getTokenByTicketId(String ticketId, HttpServletRequest request) {
public TokenVO getTokenByTicketId(String ticketId, HttpServletRequest request) {
HttpSession session = request.getSession();
//1. 通过ticketId 换取 accessToken
String token = zlbAppAuthService.getTokenByTicket(ticketId);
//2. 保存accessToken
session.setAttribute(TOKEN_SESSION_KEY, token);
// //3. 通过accessToken 获取用户信息
// JSONObject userInfo = zlbAuthService.getUserInfoByToken(token);
// //4. 缓存用户信息
// session.setAttribute(USER_INFO_KEY, userInfo);
log.info("session:{}",session);
return token;
TokenVO tokenByTicket = zlbAppAuthService.getTokenByTicket(ticketId);
// //2. 保存accessToken
// session.setAttribute(TOKEN_SESSION_KEY, tokenByTicket.g);
//// //3. 通过accessToken 获取用户信息
//// JSONObject userInfo = zlbAuthService.getUserInfoByToken(token);
//// //4. 缓存用户信息
//// session.setAttribute(USER_INFO_KEY, userInfo);
// log.info("session:{}",session);
return tokenByTicket;
}
}
package com.tykj.zlbapp.subject.service;
import com.tykj.zlbapp.subject.vo.TokenVO;
/**
* @author zsp
* @version 1.0
......@@ -7,5 +9,5 @@ package com.tykj.zlbapp.subject.service;
*/
public interface ZlbAppAuthService {
String getTokenByTicket(String ticketId);
TokenVO getTokenByTicket(String ticketId);
}
package com.tykj.zlbapp.subject.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.tykj.zlbapp.contants.AppConstants;
import com.tykj.zlbapp.subject.service.ZlbAppAuthService;
import com.tykj.zlbapp.subject.vo.TokenVO;
import com.tykj.zlbapp.util.HeadUtil;
import com.tykj.zlbapp.util.MD5Util;
import com.tykj.zlbapp.util.XMLParse;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
......@@ -14,6 +17,7 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* @author zsp
......@@ -27,7 +31,7 @@ public class ZlbAppAuthServiceImpl implements ZlbAppAuthService {
private RestTemplate restTemplate;
@Override
public String getTokenByTicket(String ticket) {
public TokenVO getTokenByTicket(String ticket) {
//请求zlbApp的接口
//进行接口请求的构造
//1 构造header
......@@ -35,7 +39,6 @@ public class ZlbAppAuthServiceImpl implements ZlbAppAuthService {
//请求body为x-www-form-urlencoded方式
MultiValueMap<String,Object> params = new LinkedMultiValueMap<>();
//servicecode 就是ak
params.add("servicecode",AppConstants.IRS_AK);
params.add("method","ticketValidation");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
......@@ -45,7 +48,8 @@ public class ZlbAppAuthServiceImpl implements ZlbAppAuthService {
params.add("st",ticket);
HttpEntity<MultiValueMap<String, Object>> httpEntity=new HttpEntity<>(params,headers);
String body = restTemplate.postForEntity(AppConstants.ACCESS_TOKEN_URL, httpEntity, String.class).getBody();
return body;
//解析xml
Map<String, Object> valueByNode = XMLParse.getValueByNode(body);
return JSONObject.parseObject(JSONObject.toJSONString(valueByNode), TokenVO.class);
}
}
package com.tykj.zlbapp.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zsp
* @version 1.0
* @date 2022/8/26 13:45
*/
@ApiModel("根据ticket获取token返回的vo")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class TokenVO {
@ApiModelProperty(value = "根节点")
private String rootNode;
@ApiModelProperty(value = "返回的结果")
private Integer result;
@ApiModelProperty(value = "返回的token")
private String token;
@ApiModelProperty(value = "用户id")
private String userid;
@ApiModelProperty(value = "登录名")
private String loginname;
@ApiModelProperty(value = "组织编码")
private Integer orgcoding;
@ApiModelProperty(value = "用户名")
private String username;
@ApiModelProperty(value = "错误信息")
private String errmsg;
}
package com.tykj.zlbapp.util;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
* @author zsp
* @version 1.0
* @date 2022/8/26 13:23
*/
public class XMLParse {
public static Map<String, Object> getValueByNode(String xml) {
Map<String,Object> map = new HashMap<>();
try {
Document doc = DocumentHelper.parseText(xml);
//搞一个map
Element roots = doc.getRootElement();
// System.out.println("根节点 = [" + roots.getName() + "]");
// System.out.println("内容:" + roots.getText());
map.put("SSO",roots.getText());
Iterator elements = roots.elementIterator();
while (elements.hasNext()) {
Element child = (Element) elements.next();
map.put(child.getName(),child.getText());
// System.out.println("节点名称 = [" + child.getName() + "]"+"节点内容:"+child.getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
return map;
}
public static void main(String[] args) {
String returnMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<SSO>\n" +
" <result>0</result>\n" +
" <errmsg>成功</errmsg>\n" +
" <token>8a118a50824addd60182d81efe705744-commonToken</token>\n" +
" <userid>8a118a527527bd3901754dcec5c216f9</userid>\n" +
" <loginname>zj410526199611145814</loginname>\n" +
" <orgcoding>001006</orgcoding>\n" +
" <username>周少攀</username>\n" +
"</SSO>";
}
}
package com.tykj.zlbapp.util;
package com.tykj.zlbapp.util.http;
import org.apache.http.*;
......
package com.tykj.zlbapp.util;
package com.tykj.zlbapp.util.http;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
......
package com.tykj.zlbapp.util;
package com.tykj.zlbapp.util.http;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论