Commit a2699ffbec0349036cc899ca8a740939367f35b0

Authored by 王通
1 parent e132a64f

1.

src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
@@ -347,7 +347,6 @@ public class AdminUtilsController { @@ -347,7 +347,6 @@ public class AdminUtilsController {
347 gatewayHttpLoader.afterPropertiesSet(); 347 gatewayHttpLoader.afterPropertiesSet();
348 gatewayHttpUtils.afterPropertiesSet(); 348 gatewayHttpUtils.afterPropertiesSet();
349 rfidHttpLoader.afterPropertiesSet(); 349 rfidHttpLoader.afterPropertiesSet();
350 - ssoConfig.afterPropertiesSet();  
351 350
352 return "success"; 351 return "success";
353 } catch (Exception e) { 352 } catch (Exception e) {
@@ -366,7 +365,6 @@ public class AdminUtilsController { @@ -366,7 +365,6 @@ public class AdminUtilsController {
366 gatewayHttpLoader.afterPropertiesSet(); 365 gatewayHttpLoader.afterPropertiesSet();
367 gatewayHttpUtils.afterPropertiesSet(); 366 gatewayHttpUtils.afterPropertiesSet();
368 rfidHttpLoader.afterPropertiesSet(); 367 rfidHttpLoader.afterPropertiesSet();
369 - ssoConfig.afterPropertiesSet();  
370 368
371 return "success"; 369 return "success";
372 } catch (Exception e) { 370 } catch (Exception e) {
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);
@@ -186,8 +187,19 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -186,8 +187,19 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
186 187
187 // 校验密码 188 // 校验密码
188 boolean matchStatus = new BCryptPasswordEncoder(4).matches(password, user.getPassword()); 189 boolean matchStatus = new BCryptPasswordEncoder(4).matches(password, user.getPassword());
189 - if (!matchStatus) {  
190 - userOrPasswordInvalid(rs, userName); 190 + if (null == user || !matchStatus) {
  191 + rs.put("msg", "密码有误");
  192 +
  193 + Integer errTimes = USER_ERRTIMES.get(userName);
  194 + if (null == errTimes) {
  195 + errTimes = 0;
  196 + }
  197 + USER_ERRTIMES.put(userName, ++errTimes);
  198 + if (errTimes > 3) {
  199 + USER_LOCKTIME.put(userName, System.currentTimeMillis() + 600000);
  200 + USER_ERRTIMES.put(userName, 0);
  201 + put(rs, "msg", "密码错误4次,账户将被锁定10分钟");
  202 + }
191 203
192 return rs; 204 return rs;
193 } 205 }
@@ -222,7 +234,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -222,7 +234,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
222 sysUserService.recordLoginDate(userName); 234 sysUserService.recordLoginDate(userName);
223 //session里写入用户名,webSocket连接时标识身份用 235 //session里写入用户名,webSocket连接时标识身份用
224 session.setAttribute(Constants.SESSION_USERNAME, user.getUserName()); 236 session.setAttribute(Constants.SESSION_USERNAME, user.getUserName());
225 - session.setAttribute(Constants.RESOURCE_AUTHORITYS, user.getLinks()); 237 + //session.setAttribute(Constants.RESOURCE_AUTHORITYS, user.getLinks());
226 238
227 //获取公司权限数据 239 //获取公司权限数据
228 List<CompanyAuthority> cmyAuths = companyAuthorityService.findByUser(user); 240 List<CompanyAuthority> cmyAuths = companyAuthorityService.findByUser(user);
src/main/java/com/bsth/security/SsoConfig.java
@@ -11,7 +11,7 @@ import org.springframework.stereotype.Component; @@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
11 * @author Hill 11 * @author Hill
12 */ 12 */
13 @Component 13 @Component
14 -public class SsoConfig implements InitializingBean { 14 +public class SsoConfig {
15 15
16 /** 16 /**
17 * 是否开启sso登录 17 * 是否开启sso登录
@@ -57,6 +57,7 @@ public class SsoConfig implements InitializingBean { @@ -57,6 +57,7 @@ public class SsoConfig implements InitializingBean {
57 return systemCode; 57 return systemCode;
58 } 58 }
59 59
  60 + @Value("${sso.systemcode}")
60 public void setSystemCode(String systemCode) { 61 public void setSystemCode(String systemCode) {
61 this.systemCode = systemCode; 62 this.systemCode = systemCode;
62 } 63 }
@@ -86,13 +87,8 @@ public class SsoConfig implements InitializingBean { @@ -86,13 +87,8 @@ public class SsoConfig implements InitializingBean {
86 return ssoAuthUrl; 87 return ssoAuthUrl;
87 } 88 }
88 89
  90 + @Value("${sso.http.url.auth}")
89 public void setSsoAuthUrl(String ssoAuthUrl) { 91 public void setSsoAuthUrl(String ssoAuthUrl) {
90 this.ssoAuthUrl = ssoAuthUrl; 92 this.ssoAuthUrl = ssoAuthUrl;
91 } 93 }
92 -  
93 - @Override  
94 - public void afterPropertiesSet() throws Exception {  
95 - setSystemCode(SystemParamCache.getSsoSystemCode());  
96 - setSsoAuthUrl(SystemParamCache.getUrlHttpSsoAuth());  
97 - }  
98 } 94 }
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, HttpClientUtils.createFormEntity(new HashMap<>()), 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, HttpClientUtils.createFormEntity(new HashMap<>()));
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.EntityBuilder;
  9 +import org.apache.http.client.entity.UrlEncodedFormEntity;
6 import org.apache.http.client.methods.CloseableHttpResponse; 10 import org.apache.http.client.methods.CloseableHttpResponse;
7 import org.apache.http.client.methods.HttpGet; 11 import org.apache.http.client.methods.HttpGet;
8 import org.apache.http.client.methods.HttpPost; 12 import org.apache.http.client.methods.HttpPost;
@@ -10,6 +14,7 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory; @@ -10,6 +14,7 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
10 import org.apache.http.entity.StringEntity; 14 import org.apache.http.entity.StringEntity;
11 import org.apache.http.impl.client.CloseableHttpClient; 15 import org.apache.http.impl.client.CloseableHttpClient;
12 import org.apache.http.impl.client.HttpClients; 16 import org.apache.http.impl.client.HttpClients;
  17 +import org.apache.http.message.BasicNameValuePair;
13 import org.slf4j.Logger; 18 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory; 19 import org.slf4j.LoggerFactory;
15 20
@@ -17,9 +22,12 @@ import javax.net.ssl.*; @@ -17,9 +22,12 @@ 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;
  28 +import java.util.ArrayList;
22 import java.util.HashMap; 29 import java.util.HashMap;
  30 +import java.util.List;
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;
@@ -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) {
src/main/resources/application-cloud.properties
@@ -41,7 +41,7 @@ spring.kafka.consumer.group-id= schedule-system @@ -41,7 +41,7 @@ spring.kafka.consumer.group-id= schedule-system
41 spring.kafka.consumer.auto-offset-reset= latest 41 spring.kafka.consumer.auto-offset-reset= latest
42 42
43 sso.enabled= true 43 sso.enabled= true
44 -sso.systemcode = SYS0023  
45 -sso.http.url.login= http://47.92.212.107:9102/portal/index.html#/login  
46 -sso.http.url.logout= http://47.92.212.107:9102/information/api/v1/logout  
47 -sso.http.url.auth= http://47.92.212.107:9102/information/authenticate/authorityAuthentication  
48 \ No newline at end of file 44 \ No newline at end of file
  45 +sso.systemcode = SYSUS0023
  46 +sso.http.url.login= http://47.92.212.107:9102/login?redirect=%2Findex
  47 +sso.http.url.logout= http://47.92.212.107:9102/login?redirect=%2Findex
  48 +sso.http.url.auth= http://47.92.212.107:9102/prod-api/system/utilitySystem/checkToken
49 \ No newline at end of file 49 \ No newline at end of file
src/main/resources/application-test.properties
@@ -38,8 +38,8 @@ spring.kafka.consumer.auto-offset-reset= latest @@ -38,8 +38,8 @@ spring.kafka.consumer.auto-offset-reset= latest
38 spring.kafka.consumer.key-deserializer= org.apache.kafka.common.serialization.StringDeserializer 38 spring.kafka.consumer.key-deserializer= org.apache.kafka.common.serialization.StringDeserializer
39 spring.kafka.consumer.value-deserializer= org.apache.kafka.common.serialization.StringDeserializer 39 spring.kafka.consumer.value-deserializer= org.apache.kafka.common.serialization.StringDeserializer
40 40
41 -sso.enabled= false  
42 -sso.systemcode = SYS0023  
43 -sso.http.url.login= https://127.0.0.1/portal/index.html#/login  
44 -sso.http.url.logout= https://127.0.0.1/information/api/v1/logout  
45 -sso.http.url.auth= https://127.0.0.1/information/authenticate/authorityAuthentication  
46 \ No newline at end of file 41 \ No newline at end of file
  42 +sso.enabled= true
  43 +sso.systemcode = SYSUS0023
  44 +sso.http.url.login= http://47.92.212.107:9102/login?redirect=%2Findex
  45 +sso.http.url.logout= http://47.92.212.107:9102/login?redirect=%2Findex
  46 +sso.http.url.auth= http://47.92.212.107:9102/prod-api/system/utilitySystem/checkToken
47 \ No newline at end of file 47 \ No newline at end of file
src/main/resources/application.properties
1 -spring.profiles.active = cloud 1 +spring.profiles.active = test
2 2
3 spring.view.suffix=.html 3 spring.view.suffix=.html
4 server.session-timeout=-1 4 server.session-timeout=-1