记住我的账号,使用在线列表踢出用户无效问题修正。
This commit is contained in:
@@ -231,10 +231,10 @@ public class LoginController extends BaseController{
|
||||
Session session = UserUtils.getSession();
|
||||
|
||||
// 是否是登录操作
|
||||
boolean isLogin = "true".equals(loginInfo.getParam("__login"));
|
||||
boolean isLogin = "true".equals(session.getAttribute("__login"));
|
||||
if (isLogin){
|
||||
// 获取后接着清除,防止下次获取仍然认为是登录状态
|
||||
loginInfo.getParams().remove("__login");
|
||||
session.removeAttribute("__login");
|
||||
// 设置共享SessionId的Cookie值(第三方系统使用)
|
||||
String cookieName = Global.getProperty("session.shareSessionIdCookieName");
|
||||
if (StringUtils.isNotBlank(cookieName)){
|
||||
|
||||
@@ -25,6 +25,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import com.beust.jcommander.internal.Lists;
|
||||
import com.beust.jcommander.internal.Maps;
|
||||
import com.jeesite.common.cache.CacheUtils;
|
||||
import com.jeesite.common.collect.MapUtils;
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.lang.ObjectUtils;
|
||||
@@ -145,6 +147,17 @@ public class OnlineController extends BaseController{
|
||||
public String tickOut(String sessionId) {
|
||||
Session session = sessionDAO.readSession(sessionId);
|
||||
if (session != null){
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, String> onlineTickOutMap = (Map<String, String>)CacheUtils.get("onlineTickOutMap");
|
||||
if (onlineTickOutMap == null){
|
||||
onlineTickOutMap = MapUtils.newConcurrentMap();
|
||||
}
|
||||
PrincipalCollection pc = (PrincipalCollection)session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
|
||||
LoginInfo principal = (pc != null ? (LoginInfo)pc.getPrimaryPrincipal() : null);
|
||||
if (principal != null){
|
||||
onlineTickOutMap.put(principal.getId()+"_"+principal.getParam("deviceType", "PC"), StringUtils.EMPTY);
|
||||
}
|
||||
CacheUtils.put("onlineTickOutMap", onlineTickOutMap);
|
||||
sessionDAO.delete(session);
|
||||
return renderResult(Global.TRUE, "踢出已成功!");
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ sys.login.accountDisabled=该帐号已停用。
|
||||
sys.login.accountFreezed=该帐号已冻结。
|
||||
sys.login.accountAudited=该帐号待审核。
|
||||
sys.login.accountInvalid=该帐号无效。
|
||||
sys.login.tickOutMessage=账号已被管理员移出在线,请重新登录。
|
||||
sys.login.multiAddrMessage=账号已在其它地方登录,请重新登录。
|
||||
sys.login.failedNumLock=登录失败,尝试次数过多,账号已锁定,请 {0} 分钟后重试.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user