Kaynağa Gözat

fix:session不同步处理

Hu Jie 7 yıl önce
ebeveyn
işleme
cb5a225f36

+ 13 - 0
src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

@@ -56,6 +56,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 访问拦截
@@ -311,6 +312,7 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 				// 如果是从个人用户切换或者当前企业切换
 				boolean flag = null == user.getEnterprise() || !user.getEnterprise().getUu().equals(tokenUser.getSpaceUU());
 				if (!StringUtils.isEmpty(tokenUser.getSpaceUU()) && flag) {
+					getUserByToken(user, tokenUser, token);
 					user.setCurrentEnterprise(tokenUser.getSpaceUU());
 				}
 			}
@@ -334,6 +336,17 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		}
 	}
 
+	private User getUserByToken(User user, UserAccount tokenUser, SSOToken token) {
+		Set<Enterprise> enterprises = user.getEnterprises();
+		if (!CollectionUtils.isEmpty(enterprises)) {
+			List<Enterprise> correctEnterprises = enterprises.stream().filter(enter -> enter.getUu().equals(tokenUser.getSpaceUU())).collect(Collectors.toList());
+			if (CollectionUtils.isEmpty(correctEnterprises)) {
+				user = getUserByToken(token);
+			}
+		}
+		return user;
+	}
+
     /**
      * 检验是否个人用户
      *