Commit adf802fd authored by suntao's avatar suntao

账号在别的地方登陆 退出当前登陆

parent 2814ff8d
......@@ -3,12 +3,9 @@ package cn.quantgroup.cashloanflowboss.core.asserts;
import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationDictionary;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.core.dictionary.Status;
import cn.quantgroup.cashloanflowboss.core.exception.ApplicationException;
import org.apache.commons.lang3.ObjectUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Collection;
import java.util.Map;
......@@ -323,40 +320,41 @@ public class Assert {
/**
* @param concurrentHashMapLoginInfo 账号最后登陆时间
* @param authenticationLoginCrowdOut
*
*/
public static void isLastLogin(Map<String, Object> concurrentHashMapLoginInfo, Status authenticationLoginCrowdOut) {
public static Boolean isLastLogin(Map<String, Object> concurrentHashMapLoginInfo) {
HttpSession session = Application.getSession();
if (Objects.isNull(session)) {
System.out.println("session 为空");
return;
return false;
}
Principal principal = Application.getPrincipal();
if (Objects.isNull(principal)) {
System.out.println("principal 为空");
return;
return false;
}
Object userLastLoginTimeObject = concurrentHashMapLoginInfo.get(principal.getUserInfo().getUserId()+"");
if (Objects.isNull(userLastLoginTimeObject)) {
// 没有登陆时间 不处理
System.out.println("userLastLoginTimeObject 为空");
return;
return false;
}
// 获取session最后登陆时间
Object creationTimeObject = session.getAttribute(ApplicationDictionary.USER_SESSION_LOGIN_TIME);
if (Objects.isNull(creationTimeObject)) {
System.out.println("lastAccessedTime 为空");
return;
return false;
}
try {
if (Long.valueOf(creationTimeObject.toString()) < Long.valueOf(userLastLoginTimeObject.toString())) {
throw new ApplicationException(authenticationLoginCrowdOut);
return true;
}
} catch (NumberFormatException e) {
return;
return false;
}
return false;
}
}
......@@ -9,6 +9,7 @@ import cn.quantgroup.cashloanflowboss.component.security.SecurityHandler;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.core.exception.ApplicationException;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -36,7 +37,13 @@ public class ApplicationSecurityHandler implements SecurityHandler {
Assert.isNull(principal, ApplicationStatus.AUTHENTICATION_LOGIN);
// 是否 被挤下线
Assert.isLastLogin(loginService.getConcurrentHashMapLoginInfo(), ApplicationStatus.AUTHENTICATION_LOGIN_CROWD_OUT);
Boolean isLogin = Assert.isLastLogin(loginService.getConcurrentHashMapLoginInfo());
if (isLogin != null && isLogin) {
// 退出登陆
loginService.logout();
// 返回 信息
throw new ApplicationException(ApplicationStatus.AUTHENTICATION_LOGIN_CROWD_OUT);
}
// 如果是超级管理员跳过权限验证
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment