|
3 | 3 | import java.io.IOException;
|
4 | 4 | import java.io.PrintWriter;
|
5 | 5 | import java.util.HashMap;
|
| 6 | +import java.util.concurrent.ExecutorService; |
| 7 | +import java.util.concurrent.Executors; |
6 | 8 |
|
7 | 9 | import javax.servlet.ServletException;
|
8 | 10 | import javax.servlet.http.HttpServletRequest;
|
@@ -43,6 +45,7 @@ public class LoginResultHandler implements AuthenticationSuccessHandler,Authenti
|
43 | 45 | private LoginSecurityService loginSecurityService;
|
44 | 46 | @Autowired
|
45 | 47 | private SysLoginLogService sysLoginLogService;
|
| 48 | + private ExecutorService threadPool = Executors.newCachedThreadPool(); |
46 | 49 | @Override
|
47 | 50 | public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
|
48 | 51 | AuthenticationException exception) throws IOException, ServletException {
|
@@ -98,27 +101,33 @@ private void loginLog(String status,String loginName,HttpServletRequest request)
|
98 | 101 | String ip = IpUtils.getIpAddr(request);
|
99 | 102 | String userAgentStr = request.getHeader("User-Agent");
|
100 | 103 | UserAgent userAgent = UserAgent.parseUserAgentString(userAgentStr);
|
101 |
| - Browser browser = userAgent.getBrowser(); |
102 |
| - OperatingSystem os = userAgent.getOperatingSystem(); |
103 |
| - String deviceName = os.getName() + " "+ os.getDeviceType(); |
104 |
| - String area = ""; |
105 |
| - String browserStr = browser.getName() +" "+ browser.getVersion(userAgentStr); |
106 |
| - try { |
107 |
| - if (StringUtils.isNotEmpty(ip)) { |
108 |
| - HashMap<String, String> params = Maps.newHashMap(); |
109 |
| - params.put("ip",ip); |
110 |
| - String ipInfo = HttpRequestUtils.doGet("http://ip.taobao.com/service/getIpInfo.php",params); |
111 |
| - if (StringUtils.isNotEmpty(ipInfo)) { |
112 |
| - JSONObject parseObject = JSON.parseObject(ipInfo); |
113 |
| - if (parseObject.containsKey("data")) { |
114 |
| - JSONObject data = parseObject.getJSONObject("data"); |
115 |
| - area = data.getString("region") + data.getString("city"); |
| 104 | + threadPool.execute(new Runnable() { |
| 105 | + |
| 106 | + @Override |
| 107 | + public void run() { |
| 108 | + Browser browser = userAgent.getBrowser(); |
| 109 | + OperatingSystem os = userAgent.getOperatingSystem(); |
| 110 | + String deviceName = os.getName() + " "+ os.getDeviceType(); |
| 111 | + String area = ""; |
| 112 | + String browserStr = browser.getName() +" "+ browser.getVersion(userAgentStr); |
| 113 | + try { |
| 114 | + if (StringUtils.isNotEmpty(ip)) { |
| 115 | + HashMap<String, String> params = Maps.newHashMap(); |
| 116 | + params.put("ip",ip); |
| 117 | + String ipInfo = HttpRequestUtils.doGet("http://ip.taobao.com/service/getIpInfo.php",params); |
| 118 | + if (StringUtils.isNotEmpty(ipInfo)) { |
| 119 | + JSONObject parseObject = JSON.parseObject(ipInfo); |
| 120 | + if (parseObject.containsKey("data")) { |
| 121 | + JSONObject data = parseObject.getJSONObject("data"); |
| 122 | + area = data.getString("region") + data.getString("city"); |
| 123 | + } |
| 124 | + } |
116 | 125 | }
|
| 126 | + } catch (Exception e) { |
| 127 | + logger.error("userId login log get location fail ",e); |
117 | 128 | }
|
| 129 | + sysLoginLogService.loginLogByLoginName(SysLoginLog.SUCCESS, loginName, ip, userAgentStr, browserStr, deviceName, area); |
118 | 130 | }
|
119 |
| - } catch (Exception e) { |
120 |
| - logger.error("userId login log get location fail ",e); |
121 |
| - } |
122 |
| - sysLoginLogService.loginLogByLoginName(SysLoginLog.SUCCESS, loginName, ip, userAgentStr, browserStr, deviceName, area); |
| 131 | + }); |
123 | 132 | }
|
124 | 133 | }
|
0 commit comments