Browse Source

fixbug: 弃用session

wangdy 7 years ago
parent
commit
bbb062952e

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/account/service/impl/ResourceServiceImpl.java

@@ -74,7 +74,7 @@ public class ResourceServiceImpl implements ResourceService {
         ResultMap resultMap = new ResultMap();
         resultMap.setData(dataMap);
         //判断当前用户是否是管理员isManager;
-        User user = (User) request.getSession().getAttribute("user");
+        User user = SystemSession.getUser(); //(User) request.getSession().getAttribute("user");
         Long enAdminuu = user.getEnterprise().getEnAdminuu();
         if (enAdminuu.equals(user.getUserUU()) ) {
             dataMap.put("isManager", Boolean.TRUE);

+ 4 - 4
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -444,8 +444,8 @@ public class SearcherController {
 	@RequestMapping(value = "/stores", method = RequestMethod.GET, params = "op=pageByType")
 	@ResponseBody
 	public List<Map<String, Object>> pageStoresByTypesAndKeyword(PageParams params, String types,HttpServletRequest request, @RequestParam(required = false) String keyword) {
-		User user = (User)request.getSession().getAttribute("user");
-		SystemSession.setUser(user);
+		//User user = (User)request.getSession().getAttribute("user");
+		//SystemSession.setUser(user);
 		PageInfo pageInfo = new PageInfo(params);
 		Page<StoreIn> stores = storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword, request);
 		List<Map<String, Object>> result = new ArrayList<>();
@@ -474,7 +474,7 @@ public class SearcherController {
 	@RequestMapping(value = "/searchHistory", method = RequestMethod.GET)
 	@ResponseBody
 	public List<SearchHistory> getSearchHistory(HttpServletRequest request){
-		SystemSession.setUser((User)request.getSession().getAttribute("user"));
+		//SystemSession.setUser((User)request.getSession().getAttribute("user"));
 		if (null == SystemSession.getUser()){
 			return null;
 		}else{
@@ -485,7 +485,7 @@ public class SearcherController {
 	@RequestMapping(value = "/searchHistory", method = RequestMethod.DELETE)
 	@ResponseBody
 	public int deleteSearchHistory(HttpServletRequest request){
-		SystemSession.setUser((User)request.getSession().getAttribute("user"));
+		//SystemSession.setUser((User)request.getSession().getAttribute("user"));
 		return searcherService.deleteSearchHistoryByuserUUAndenUU();
 	}
 

+ 5 - 5
src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java

@@ -230,7 +230,7 @@ public class SearcherServiceImpl implements SearcherService {
 	@Override
 	public ModelMap searchComponentGoods(String keyword, PageParams page , HttpServletRequest request) {
 		if (this.deviceResolver.resolveDevice(request).isMobile()) {
-			SystemSession.setUser((User)request.getSession().getAttribute("user"));
+			//SystemSession.setUser((User)request.getSession().getAttribute("user"));
 			if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
 				SearchHistory searchHistory = null;
 				List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
@@ -360,8 +360,8 @@ public class SearcherServiceImpl implements SearcherService {
         futures.put("total",vendorIntroductionPage.getTotalElements());
         futures.put("size",vendorIntroductionPage.getSize());
 
-        User user = (User)request.getSession().getAttribute("user");
-        SystemSession.setUser(user);
+        //User user = (User)request.getSession().getAttribute("user");
+        //SystemSession.setUser(user);
         PageInfo pageInfo = new PageInfo(page);
         Page<StoreIn> stores = pageStoresByTypesAndKeyword(pageInfo, keyword, request);
         List<VendorIntroduction> vendorIntroductions = new ArrayList<>();
@@ -401,7 +401,7 @@ public class SearcherServiceImpl implements SearcherService {
         }, pageInfo);
 
         if (this.deviceResolver.resolveDevice(request).isMobile()) {
-            SystemSession.setUser((User)request.getSession().getAttribute("user"));
+            //SystemSession.setUser((User)request.getSession().getAttribute("user"));
             if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
                 SearchHistory searchHistory = null;
                 List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
@@ -755,7 +755,7 @@ public class SearcherServiceImpl implements SearcherService {
     @Override
     public ModelMap getPcbGoods(String keyword, PageParams page,HttpServletRequest request) {
         if (this.deviceResolver.resolveDevice(request).isMobile()) {
-            SystemSession.setUser((User)request.getSession().getAttribute("user"));
+            //SystemSession.setUser((User)request.getSession().getAttribute("user"));
             if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
                 SearchHistory searchHistory = null;
                 List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);

+ 56 - 3
src/main/java/com/uas/platform/b2c/core/filter/SystemSessionInterceptor.java

@@ -1,7 +1,17 @@
 package com.uas.platform.b2c.core.filter;
 
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.core.util.AgentUtils;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import com.uas.sso.entity.UserAccount;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
 import javax.servlet.http.HttpServletRequest;
@@ -13,16 +23,59 @@ import javax.servlet.http.HttpSession;
  */
 public class SystemSessionInterceptor extends HandlerInterceptorAdapter {
 
+    private static final Logger logger = Logger.getLogger(SystemSessionInterceptor.class);
+
+    @Autowired
+    private UserService userService;
+
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         if (SystemSession.getUser() == null) {
-            HttpSession session = request.getSession(false);
-            if (session != null && session.getAttribute("user") != null) {
-                SystemSession.setUser((User) session.getAttribute("user"));
+            SSOToken token = (SSOToken)SSOHelper.getToken(request);
+            User user = getUserByToken(token);
+            if (user != null) {
+                user.setIp(AgentUtils.getIp(request));
+                SystemSession.setUser(user);
             }
+            HttpSession session = request.getSession(false);
+//            if (session != null && session.getAttribute("user") != null) {
+//                SystemSession.setUser((User) session.getAttribute("user"));
+//            }
             SystemSession.setSession(session);
         }
         return true;
     }
 
+    private User getUserByToken(SSOToken token) {
+        User authedUser = null;
+        if (token.getData() != null) {
+            UserAccount tokenUser = FlexJsonUtils.fromJson(token.getData(), UserAccount.class);
+            if (!StringUtils.isEmpty(tokenUser.getUserUU())) {
+                // dialectUID表示client系统自己的唯一标识,比如user_uu,手机号没设置的情况下使用
+                authedUser = userService.findUserByUserUU(tokenUser.getUserUU());
+            } else if (!StringUtils.isEmpty(tokenUser.getMobile())) {
+                // UID表示所有系统公认的唯一标识,这里统一使用手机号
+                authedUser = userService.findUserByUserTel(tokenUser.getMobile());
+            } else {
+                logger.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getVipName()));
+            }
+            if (authedUser != null && authedUser.getEnterprises() != null) {
+                // 企业资料在client系统自己的唯一标识,比如en_uu
+                if (tokenUser.getSpaceUU() != null) {
+                    authedUser.setCurrentEnterprise(tokenUser.getSpaceUU());
+                } else if (tokenUser.getBusinessCode() != null) {
+                    for (Enterprise enterprise : authedUser.getEnterprises()) {
+                        // 企业资料在所有系统公认的唯一标识,这里使用商业登记证号
+                        if (tokenUser.getBusinessCode().equals(enterprise.getEnBussinessCode())) {
+                            authedUser.setEnterprise(enterprise);
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        return authedUser;
+    }
+
+
 }

+ 4 - 4
src/main/java/com/uas/platform/b2c/prod/product/component/api/ComponentController.java

@@ -187,8 +187,8 @@ public class ComponentController {
 	@RequestMapping(value = "/{uuid}", method = RequestMethod.GET)
 	public Component findComponentByUuid(@PathVariable("uuid") String uuid, HttpServletRequest request) {
 		// 获取user信息 方便获取器件信息时 能根据是否登录 返回不同的附件链接,不登陆 不能看附件信息。
-		User user = (User) request.getSession().getAttribute("user");
-		SystemSession.setUser(user);
+		//User user = (User) request.getSession().getAttribute("user");
+		//SystemSession.setUser(user);
 		componentService.addVisitCount(uuid);
 		return componentService.findByUuid(uuid);
 	}
@@ -200,7 +200,7 @@ public class ComponentController {
 	 */
 	@RequestMapping(value = "/list/test", method = RequestMethod.GET)
 	public ComponentInfo findOneComp(HttpServletRequest request) {
-		User user = (User) request.getSession().getAttribute("user");
+		User user = SystemSession.getUser(); //User user = (User) request.getSession().getAttribute("user");
 		if (user != null) {
 			System.out.println(user.toString());
 		}
@@ -214,7 +214,7 @@ public class ComponentController {
 	 */
 	@RequestMapping(value = "/list/proofing", method = RequestMethod.GET)
 	public Page<ComponentInfo> findAllComponentForProof(PageParams params, String keyword, HttpServletRequest request) {
-		User user = (User) request.getSession().getAttribute("user");
+		User user = SystemSession.getUser(); //(User) request.getSession().getAttribute("user");
 		PageInfo info = new PageInfo(params);
 		// 库存为0,样品数为0的不显示
 		SimpleExpression siExpression = new SimpleExpression("reserve", new Double(0), Operator.GT);

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/controller/ComponentGoodsController.java

@@ -35,8 +35,8 @@ public class ComponentGoodsController {
 	@RequestMapping(value = "/getCompGoodsByKindid", method = RequestMethod.GET)
 	public Page<ComponentGoods> getCompGoodsByKindid(PageParams params, HttpServletRequest request){
 		PageInfo info = new PageInfo(params);
-		User user = (User)request.getSession().getAttribute("user");
-		SystemSession.setUser(user);
+		//User user = (User)request.getSession().getAttribute("user");
+		//SystemSession.setUser(user);
 		return componentGoodsService.getCompGoodsByKindid(info);
 	}
 }

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreInServiceImpl.java

@@ -403,7 +403,7 @@ public class StoreInServiceImpl implements StoreInService {
 		}, pageInfo);
 
 		if (this.deviceResolver.resolveDevice(request).isMobile()) {
-			SystemSession.setUser((User)request.getSession().getAttribute("user"));
+			//SystemSession.setUser((User)request.getSession().getAttribute("user"));
 			if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
 				SearchHistory searchHistory = null;
 				List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);