diff --git a/modules/core/.settings/org.eclipse.wst.common.component b/modules/core/.settings/org.eclipse.wst.common.component
index ab94cf8e..4be3c128 100644
--- a/modules/core/.settings/org.eclipse.wst.common.component
+++ b/modules/core/.settings/org.eclipse.wst.common.component
@@ -2,6 +2,5 @@
-
diff --git a/modules/core/src/main/java/com/jeesite/common/shiro/realm/CasAuthorizingRealm.java b/modules/core/src/main/java/com/jeesite/common/shiro/realm/CasAuthorizingRealm.java
index 3db3f135..c92e00f4 100644
--- a/modules/core/src/main/java/com/jeesite/common/shiro/realm/CasAuthorizingRealm.java
+++ b/modules/core/src/main/java/com/jeesite/common/shiro/realm/CasAuthorizingRealm.java
@@ -19,8 +19,8 @@ import org.jasig.cas.client.validation.TicketValidationException;
import org.jasig.cas.client.validation.TicketValidator;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import com.beust.jcommander.internal.Maps;
import com.jeesite.common.codec.EncodeUtils;
+import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.lang.ObjectUtils;
import com.jeesite.common.shiro.authc.FormToken;
import com.jeesite.common.shiro.cas.CasCreateUser;
@@ -94,7 +94,7 @@ public class CasAuthorizingRealm extends BaseAuthorizingRealm {
// 生成登录信息对象
FormToken token = new FormToken();
token.setUsername(casPrincipal.getName());
- Map params = Maps.newHashMap();
+ Map params = MapUtils.newHashMap();
params.putAll(casPrincipal.getAttributes());
params.put("ticket", ticket);
token.setParams(params);
diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java
index e7e8112b..4db3b8a8 100644
--- a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java
+++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java
@@ -15,6 +15,7 @@ import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.UnauthorizedException;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.session.Session;
+import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.util.WebUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -192,7 +193,11 @@ public class LoginController extends BaseController{
}
// 验证下用户权限,以便调用doGetAuthorizationInfo方法,保存单点登录登出句柄
- if (!SecurityUtils.getSubject().isPermitted("user")){
+ Subject subject = SecurityUtils.getSubject();
+ if (subject == null || !subject.isPermitted("user")){
+ if (subject != null){
+ subject.logout();
+ }
String queryString = request.getQueryString();
queryString = queryString == null ? "" : "?" + queryString;
ServletUtils.redirectUrl(request, response, adminPath + "/login" + queryString);
diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java
index 3488b6dd..3d67f45b 100644
--- a/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java
+++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/OnlineController.java
@@ -23,9 +23,8 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
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.ListUtils;
import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.config.Global;
import com.jeesite.common.lang.DateUtils;
@@ -85,7 +84,7 @@ public class OnlineController extends BaseController{
@ResponseBody
public List