|
|
@@ -29,6 +29,7 @@ import com.uas.sso.web.spring.AbstractSSOInterceptor;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.cache.ehcache.EhCacheCacheManager;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.mobile.device.Device;
|
|
|
import org.springframework.mobile.device.DeviceResolver;
|
|
|
@@ -88,6 +89,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
@Autowired
|
|
|
private RoleDao roleDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ EhCacheCacheManager cacheManager;
|
|
|
+
|
|
|
private final DeviceResolver deviceResolver = new LiteDeviceResolver();
|
|
|
|
|
|
@Autowired
|
|
|
@@ -312,8 +316,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
// 如果是从个人用户切换或者当前企业切换
|
|
|
boolean flag = null == user.getEnterprise() || !user.getEnterprise().getUu().equals(tokenUser.getSpaceUU());
|
|
|
if (!StringUtils.isEmpty(tokenUser.getSpaceUU()) && flag) {
|
|
|
- user = getUserByToken(user, tokenUser, token);
|
|
|
+ user = getUserByToken(user, tokenUser);
|
|
|
user.setCurrentEnterprise(tokenUser.getSpaceUU());
|
|
|
+ request.getSession().setAttribute("user", user);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -336,12 +341,19 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private User getUserByToken(User user, UserAccount tokenUser, SSOToken token) {
|
|
|
+ private User getUserByToken(User user, UserAccount tokenUser) {
|
|
|
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);
|
|
|
+ cacheManager.getCacheManager().clearAllStartingWith("com.uas.platform.b2b.model.User");
|
|
|
+ User current = userDao.findOne(tokenUser.getUserUU());
|
|
|
+ if (!StringUtils.isEmpty(current)) {
|
|
|
+ System.out.println("从数据库查找的企业:" + tokenUser.getSpaceUU());
|
|
|
+ user = current;
|
|
|
+ } else {
|
|
|
+ System.out.println("未查询到用户信息" + tokenUser.getUserUU());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return user;
|