ソースを参照

退出登录清除缓存信息完善

ZhangWenQiang 5 年 前
コミット
8f013f1297

+ 3 - 0
happy-boot-base-common/src/main/java/org/jeecg/common/constant/CommonConstant.java

@@ -77,6 +77,9 @@ public interface CommonConstant {
     public static String LOGIN_USER_CACHERULES_PERMISSION  = "loginUser_cacheRules::Permissions_";
     /** 登录用户令牌缓存KEY前缀 */
     public static final int  TOKEN_EXPIRE_TIME  = 7200; //3600秒即是一小时
+
+    /** 登录用户Shiro权限缓存KEY前缀 */
+    public static String PREFIX_USER_SHIRO_CACHE  = "shiro:cache:org.jeecg.modules.shiro.authc.ShiroRealm.authorizationCache:";
     
     public static final String PREFIX_USER_TOKEN  = "PREFIX_USER_TOKEN_";
     

+ 4 - 0
happy-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -118,9 +118,13 @@ public class LoginController {
 	    	log.info(" 用户名:  "+sysUser.getRealname()+",退出成功! ");
 	    	//清空用户Token缓存
 	    	redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token);
+			//清空用户登录Shiro权限缓存
+			redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
 	    	//清空用户权限缓存:权限Perms和角色集合
 	    	redisUtil.del(CommonConstant.LOGIN_USER_CACHERULES_ROLE + username);
 	    	redisUtil.del(CommonConstant.LOGIN_USER_CACHERULES_PERMISSION + username);
+			//调用shiro的logout
+			SecurityUtils.getSubject().logout();
 	    	return Result.ok("退出登录成功!");
 	    }else {
 	    	return Result.error("无效的token");