Commit 050fa4b73d5e0d8cfcaeb0cba29d7ed177806b52

Authored by 王通
1 parent c00bf49d

1.加入统一平台登录验证方式

src/main/java/com/bsth/controller/sys/UserController.java
@@ -76,37 +76,38 @@ public class UserController extends BaseController<SysUser, Integer> { @@ -76,37 +76,38 @@ public class UserController extends BaseController<SysUser, Integer> {
76 public static Map<String, Long> USER_LOCKTIME = new HashMap<>(); 76 public static Map<String, Long> USER_LOCKTIME = new HashMap<>();
77 77
78 @RequestMapping(value = "/login/token") 78 @RequestMapping(value = "/login/token")
79 - public void login(@RequestParam String token, @RequestParam String account, @RequestParam Long time, HttpServletRequest request, HttpServletResponse response) throws Exception { 79 + public void login(@RequestParam String token, HttpServletRequest request, HttpServletResponse response) throws Exception {
80 response.addHeader("Content-Type", "text/html;charset=UTF-8"); 80 response.addHeader("Content-Type", "text/html;charset=UTF-8");
81 if (!ssoConfig.isSsoEnabled()) { 81 if (!ssoConfig.isSsoEnabled()) {
82 response.getWriter().write("系统未开启统一登录配置,请联系管理员"); 82 response.getWriter().write("系统未开启统一登录配置,请联系管理员");
83 return; 83 return;
84 } 84 }
85 - if (token == null || account == null || time == null) { 85 + if (token == null) {
86 throw new IllegalArgumentException("请检查参数"); 86 throw new IllegalArgumentException("请检查参数");
87 } 87 }
88 88
89 Map<String, Object> param = new HashMap<>(), user = new HashMap<>(); 89 Map<String, Object> param = new HashMap<>(), user = new HashMap<>();
90 param.put("token", token); 90 param.put("token", token);
91 - param.put("systemCode", ssoConfig.getSystemCode());  
92 - StringBuilder sb = HttpClientUtils.post(ssoConfig.getSsoAuthUrl(), mapper.writeValueAsString(param)); 91 + param.put("sysCode", ssoConfig.getSystemCode());
  92 + StringBuilder sb = HttpClientUtils.post(ssoConfig.getSsoAuthUrl(), HttpClientUtils.createFormEntity(param), HttpClientUtils.createFormHeader());
93 93
94 Assert.notNull(sb, "统一登录平台验证数据不为空"); 94 Assert.notNull(sb, "统一登录平台验证数据不为空");
95 logger.info(String.format("统一登录平台:%s", sb.toString())); 95 logger.info(String.format("统一登录平台:%s", sb.toString()));
96 - param = mapper.readValue(mapper.writeValueAsString(mapper.readValue(sb.toString(), Map.class).get("data")), Map.class);  
97 - String jobCode = (String) param.get("account"), realName = (String) param.get("userName");  
98 - if (!account.equals(jobCode)) {  
99 - response.getWriter().write("token与用户不匹配");  
100 - return;  
101 - }  
102 -  
103 - if (jobCode == null || realName == null) {  
104 - response.getWriter().write("token数据异常"); 96 + param = mapper.readValue(sb.toString(), Map.class);
  97 + if (200 == (int) param.get("code")) {
  98 + param = mapper.readValue(mapper.writeValueAsString(param.get("data")), Map.class);
  99 + if ("9999".equals(param.get("code")) || "9998".equals(param.get("code"))) {
  100 + response.getWriter().write(param.get("msg").toString());
  101 + return;
  102 + } else {
  103 + param = mapper.readValue(mapper.writeValueAsString(param.get("data")), Map.class);
  104 + }
  105 + } else {
  106 + response.getWriter().write(param.get("msg").toString());
105 return; 107 return;
106 } 108 }
107 -  
108 - user.put("jobCode_eq", jobCode);  
109 - user.put("realName_eq", realName); 109 + String userName = (String) param.get("userName");
  110 + user.put("userName_eq", userName);
110 user.put("enabled", true); 111 user.put("enabled", true);
111 112
112 Iterator<SysUser> userIterator = sysUserService.list(user).iterator(); 113 Iterator<SysUser> userIterator = sysUserService.list(user).iterator();
@@ -124,7 +125,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -124,7 +125,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
124 //session里写入用户名,webSocket连接时标识身份用 125 //session里写入用户名,webSocket连接时标识身份用
125 session.setAttribute(Constants.SSO_TOKEN, token); 126 session.setAttribute(Constants.SSO_TOKEN, token);
126 session.setAttribute(Constants.SESSION_USERNAME, sysUser.getUserName()); 127 session.setAttribute(Constants.SESSION_USERNAME, sysUser.getUserName());
127 - session.setAttribute(Constants.RESOURCE_AUTHORITYS, sysUser.getLinks()); 128 + //session.setAttribute(Constants.RESOURCE_AUTHORITYS, sysUser.getLinks());
128 //获取公司权限数据 129 //获取公司权限数据
129 List<CompanyAuthority> cmyAuths = companyAuthorityService.findByUser(sysUser); 130 List<CompanyAuthority> cmyAuths = companyAuthorityService.findByUser(sysUser);
130 session.setAttribute(Constants.COMPANY_AUTHORITYS, cmyAuths); 131 session.setAttribute(Constants.COMPANY_AUTHORITYS, cmyAuths);
src/main/java/com/bsth/security/handler/CustomLogoutSuccessHandler.java
@@ -43,7 +43,7 @@ public class CustomLogoutSuccessHandler implements LogoutSuccessHandler { @@ -43,7 +43,7 @@ public class CustomLogoutSuccessHandler implements LogoutSuccessHandler {
43 param.put("Authorization", String.format("Bearer %s", token)); 43 param.put("Authorization", String.format("Bearer %s", token));
44 try { 44 try {
45 request.getSession().invalidate(); 45 request.getSession().invalidate();
46 - StringBuilder sb = HttpClientUtils.post(ssoLogoutUrl, null, param); 46 + StringBuilder sb = HttpClientUtils.post(ssoLogoutUrl, "", param);
47 log.error(String.format("注销token:%s,返回结果:%s", token, sb.toString())); 47 log.error(String.format("注销token:%s,返回结果:%s", token, sb.toString()));
48 } catch (Exception e) { 48 } catch (Exception e) {
49 log.error("注销token异常", e); 49 log.error("注销token异常", e);
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -6515,7 +6515,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6515,7 +6515,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6515 Map<String, Object> res = new HashMap<>(); 6515 Map<String, Object> res = new HashMap<>();
6516 res.put("status", ResponseCode.SUCCESS); 6516 res.put("status", ResponseCode.SUCCESS);
6517 try { 6517 try {
6518 - StringBuilder sb = HttpClientUtils.post(url, null); 6518 + StringBuilder sb = HttpClientUtils.post(url, "");
6519 if (sb != null) { 6519 if (sb != null) {
6520 Map<String, Object> response = new ObjectMapper().readValue(sb.toString(), Map.class); 6520 Map<String, Object> response = new ObjectMapper().readValue(sb.toString(), Map.class);
6521 if (!"报修成功".equals(response.get("msg"))) { 6521 if (!"报修成功".equals(response.get("msg"))) {
src/main/java/com/bsth/util/HttpClientUtils.java
1 package com.bsth.util; 1 package com.bsth.util;
2 2
  3 +import com.fasterxml.jackson.core.JsonProcessingException;
  4 +import com.fasterxml.jackson.databind.ObjectMapper;
3 import org.apache.http.HttpEntity; 5 import org.apache.http.HttpEntity;
  6 +import org.apache.http.NameValuePair;
4 import org.apache.http.client.config.RequestConfig; 7 import org.apache.http.client.config.RequestConfig;
5 -import org.apache.http.client.entity.EntityBuilder; 8 +import org.apache.http.client.entity.UrlEncodedFormEntity;
6 import org.apache.http.client.methods.CloseableHttpResponse; 9 import org.apache.http.client.methods.CloseableHttpResponse;
7 import org.apache.http.client.methods.HttpGet; 10 import org.apache.http.client.methods.HttpGet;
8 import org.apache.http.client.methods.HttpPost; 11 import org.apache.http.client.methods.HttpPost;
@@ -10,16 +13,21 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory; @@ -10,16 +13,21 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
10 import org.apache.http.entity.StringEntity; 13 import org.apache.http.entity.StringEntity;
11 import org.apache.http.impl.client.CloseableHttpClient; 14 import org.apache.http.impl.client.CloseableHttpClient;
12 import org.apache.http.impl.client.HttpClients; 15 import org.apache.http.impl.client.HttpClients;
  16 +import org.apache.http.message.BasicNameValuePair;
13 import org.slf4j.Logger; 17 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory; 18 import org.slf4j.LoggerFactory;
  19 +import org.springframework.util.StringUtils;
15 20
16 import javax.net.ssl.*; 21 import javax.net.ssl.*;
17 import java.io.BufferedReader; 22 import java.io.BufferedReader;
18 import java.io.IOException; 23 import java.io.IOException;
19 import java.io.InputStreamReader; 24 import java.io.InputStreamReader;
  25 +import java.io.UnsupportedEncodingException;
20 import java.security.cert.CertificateException; 26 import java.security.cert.CertificateException;
21 import java.security.cert.X509Certificate; 27 import java.security.cert.X509Certificate;
22 import java.util.HashMap; 28 import java.util.HashMap;
  29 +import java.util.List;
  30 +import java.util.ArrayList;
23 import java.util.Map; 31 import java.util.Map;
24 32
25 /** 33 /**
@@ -29,6 +37,8 @@ public class HttpClientUtils { @@ -29,6 +37,8 @@ public class HttpClientUtils {
29 37
30 static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class); 38 static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);
31 39
  40 + private static ObjectMapper mapper = new ObjectMapper();
  41 +
32 private final static String HTTPS = "https://"; 42 private final static String HTTPS = "https://";
33 43
34 private static SSLConnectionSocketFactory sslConnectionSocketFactory; 44 private static SSLConnectionSocketFactory sslConnectionSocketFactory;
@@ -129,7 +139,7 @@ public class HttpClientUtils { @@ -129,7 +139,7 @@ public class HttpClientUtils {
129 .setConnectTimeout(15000).setConnectionRequestTimeout(15000) 139 .setConnectTimeout(15000).setConnectionRequestTimeout(15000)
130 .setSocketTimeout(15000).build(); 140 .setSocketTimeout(15000).build();
131 post.setConfig(requestConfig); 141 post.setConfig(requestConfig);
132 - if (data != null) { 142 + if (!StringUtils.isEmpty(data)) {
133 post.setEntity((new StringEntity(data, "UTF-8"))); 143 post.setEntity((new StringEntity(data, "UTF-8")));
134 } 144 }
135 145
@@ -146,6 +156,68 @@ public class HttpClientUtils { @@ -146,6 +156,68 @@ public class HttpClientUtils {
146 return stringBuffer; 156 return stringBuffer;
147 } 157 }
148 158
  159 + public static StringBuilder post(String url, HttpEntity entity) throws Exception {
  160 + return post(url, entity, new HashMap<>());
  161 + }
  162 +
  163 + public static StringBuilder post(String url, HttpEntity entity, Map<String, Object> headers) throws Exception {
  164 + CloseableHttpClient httpClient = null;
  165 + CloseableHttpResponse response = null;
  166 + StringBuilder stringBuffer = null;
  167 + try {
  168 + httpClient = defaultHttpClient(url);
  169 + HttpPost post = new HttpPost(url);
  170 +
  171 + post.setHeader("Accept", "application/json");
  172 + post.setHeader("Content-Type", "application/json;charset=UTF-8");
  173 + if (headers.size() > 0) {
  174 + for (Map.Entry<String, Object> header : headers.entrySet()) {
  175 + post.setHeader(header.getKey(), String.valueOf(header.getValue()));
  176 + }
  177 + }
  178 + //超时时间
  179 + RequestConfig requestConfig = RequestConfig.custom()
  180 + .setConnectTimeout(5000).setConnectionRequestTimeout(5000)
  181 + .setSocketTimeout(5000).build();
  182 + post.setConfig(requestConfig);
  183 + if (entity != null) {
  184 + post.setEntity(entity);
  185 + }
  186 +
  187 + response = httpClient.execute(post);
  188 + stringBuffer = getResult(response.getEntity());
  189 + } catch (Exception e) {
  190 + logger.error("", e);
  191 + } finally {
  192 + if (null != httpClient)
  193 + httpClient.close();
  194 + if (null != response)
  195 + response.close();
  196 + }
  197 + return stringBuffer;
  198 + }
  199 +
  200 + public static StringEntity createJsonEntity(Object data) throws JsonProcessingException, UnsupportedEncodingException {
  201 + return new StringEntity(mapper.writeValueAsString(data));
  202 + }
  203 +
  204 + public static UrlEncodedFormEntity createFormEntity(Map<String, Object> data) throws UnsupportedEncodingException {
  205 + List<NameValuePair> pairs = new ArrayList<>();
  206 + for (Map.Entry<String, Object> entry : data.entrySet()) {
  207 + pairs.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue())));
  208 + }
  209 +
  210 + return new UrlEncodedFormEntity(pairs);
  211 + }
  212 +
  213 + public static Map<String, Object> createFormHeader() throws UnsupportedEncodingException {
  214 + Map<String, Object> headers = new HashMap<>();
  215 + headers.put("Accept", "*/*");
  216 + headers.put("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  217 +
  218 + return headers;
  219 + }
  220 +
149 private static StringBuilder getResult(HttpEntity entity) throws IOException { 221 private static StringBuilder getResult(HttpEntity entity) throws IOException {
150 StringBuilder stringBuffer = null; 222 StringBuilder stringBuffer = null;
151 if (null != entity) { 223 if (null != entity) {