|
@@ -14,6 +14,7 @@ import com.jiayue.ssi.constant.CacheConstants;
|
|
|
import com.jiayue.ssi.constant.Constants;
|
|
|
import com.jiayue.ssi.constant.LoginConstants;
|
|
|
import com.jiayue.ssi.constant.SecretKeyConstants;
|
|
|
+import com.jiayue.ssi.dto.UserVisitInfoDto;
|
|
|
import com.jiayue.ssi.entity.SysAlarm;
|
|
|
import com.jiayue.ssi.entity.SysPolicy;
|
|
|
import com.jiayue.ssi.factory.LoginFactory;
|
|
@@ -21,6 +22,7 @@ import com.jiayue.ssi.service.SysAlarmService;
|
|
|
import com.jiayue.ssi.service.SysPolicyService;
|
|
|
import com.jiayue.ssi.service.SysUserService;
|
|
|
import com.jiayue.ssi.util.*;
|
|
|
+import eu.bitwalker.useragentutils.UserAgent;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
@@ -51,6 +53,7 @@ public class CustomAuthenticationSuccessHandler extends SavedRequestAwareAuthent
|
|
|
|
|
|
@Override
|
|
|
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
|
|
|
+ final UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
|
|
|
// 验证码验证
|
|
|
String username = request.getParameter("username");
|
|
|
// 删除缓存邮箱口令
|
|
@@ -60,7 +63,8 @@ public class CustomAuthenticationSuccessHandler extends SavedRequestAwareAuthent
|
|
|
sysUser.setLockTime(0L);
|
|
|
sysUser.setStatus("0");
|
|
|
// 加入登录IP和时间
|
|
|
- sysUser.setLoginIp(IPUtils.getIpAddr(request));
|
|
|
+ String ip = IPUtils.getIpAddr(request);
|
|
|
+ sysUser.setLoginIp(ip);
|
|
|
sysUser.setLoginDate(new Date());
|
|
|
sysUserService.updateUser(sysUser);
|
|
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
@@ -71,8 +75,18 @@ public class CustomAuthenticationSuccessHandler extends SavedRequestAwareAuthent
|
|
|
|
|
|
String token = jwtTokenUtil.generateToken(sysUser);
|
|
|
// token加入缓存,用于并发会话处理
|
|
|
- LoginConstants.sessionMap.put(username,token);
|
|
|
-// LoginConstants.tokenList.add(username);
|
|
|
+ UserVisitInfoDto userVisitInfoDto = new UserVisitInfoDto();
|
|
|
+ userVisitInfoDto.setUsername(username);
|
|
|
+ userVisitInfoDto.setVtime(System.currentTimeMillis());
|
|
|
+ userVisitInfoDto.setIp(ip);
|
|
|
+ userVisitInfoDto.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
|
|
|
+ // 获取客户端操作系统
|
|
|
+ String os = userAgent.getOperatingSystem().getName();
|
|
|
+ // 获取客户端浏览器
|
|
|
+ String browser = userAgent.getBrowser().getName();
|
|
|
+ userVisitInfoDto.setBrowser(browser);
|
|
|
+ userVisitInfoDto.setOs(os);
|
|
|
+ LoginConstants.sessionMap.put(username,userVisitInfoDto);
|
|
|
|
|
|
// 将token存储内存中,便于重复登录比对
|
|
|
if (CacheConstants.LOGIN_TOKEN_MAP.get(username)!=null){
|