Kaynağa Gözat

带token查看场景

dsx 1 yıl önce
ebeveyn
işleme
0e749c6550

+ 9 - 3
src/main/java/com/fdkankan/scene/Interceptor/CheckPermitAspect.java

@@ -7,11 +7,14 @@ import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.entity.JyUser;
 import com.fdkankan.scene.entity.SceneCooperation;
 import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.service.IJySceneUserAuthService;
+import com.fdkankan.scene.service.IJyUserService;
 import com.fdkankan.scene.service.ISceneCooperationService;
 import com.fdkankan.scene.service.IScenePlusService;
+import com.fdkankan.scene.util.JmgaSSOLoginHelper;
 import com.fdkankan.web.user.SSOLoginHelper;
 import com.fdkankan.web.user.SSOUser;
 import com.fdkankan.web.util.WebUtil;
@@ -36,7 +39,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 public class CheckPermitAspect {
 
 	@Autowired
-	private SSOLoginHelper ssoLoginHelper;
+	private JmgaSSOLoginHelper jmgaSSOLoginHelper;
 	@Autowired
 	private RedisUtil redisUtil;
 	@Autowired
@@ -45,6 +48,8 @@ public class CheckPermitAspect {
 	private ISceneCooperationService sceneCooperationService;
 	@Autowired
 	private IJySceneUserAuthService jySceneUserAuthService;
+	@Autowired
+	private IJyUserService jyUserService;
 
 
 	@Pointcut("@annotation(com.fdkankan.scene.annotation.CheckPermit)")
@@ -62,7 +67,7 @@ public class CheckPermitAspect {
 	public void doBefore(JoinPoint joinPoint) throws Exception {
 		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
 		// 读取session中的用户
-		SSOUser user = ssoLoginHelper.getSsoUser(request.getHeader("token"));
+		SSOUser user = jmgaSSOLoginHelper.getSsoUser(request.getHeader("token"));
 		if(Objects.isNull(user)){
 			throw new BusinessException(ErrorCode.TOKEN_NOT_FOUND);
 		}
@@ -92,7 +97,8 @@ public class CheckPermitAspect {
 		}
 
 		//当前用户与场景用户id相同,则拥有最高权限,可以编辑
-		if(Objects.nonNull(scenePlus.getUserId()) && scenePlus.getUserId().equals(user.getId())){
+		JyUser jyUser = jyUserService.getBySysUserId(user.getId().intValue());
+		if(Objects.nonNull(scenePlus.getUserId()) && Objects.nonNull(jyUser) && scenePlus.getUserId().intValue() == jyUser.getUserId()){
 			return;
 		}
 

+ 12 - 4
src/main/java/com/fdkankan/scene/Interceptor/CheckViewBizAuthAspect.java

@@ -14,6 +14,7 @@ import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.service.*;
+import com.fdkankan.scene.util.JmgaSSOLoginHelper;
 import com.fdkankan.web.response.ResultData;
 import com.fdkankan.web.user.SSOLoginHelper;
 import com.fdkankan.web.user.SSOUser;
@@ -30,6 +31,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.annotation.Resource;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 import javax.servlet.http.HttpServletRequest;
@@ -49,8 +51,8 @@ public class CheckViewBizAuthAspect {
 	@Value("${scene.view.encrypt-key:3d8904474ebbdbbd81c5952524dad646}")
 	private String ENCRYPT_KEY;
 
-	@Autowired
-	private SSOLoginHelper ssoLoginHelper;
+	@Resource
+	private JmgaSSOLoginHelper jmgaSSOLoginHelper;
 	@Autowired
 	private RedisUtil redisUtil;
 	@Autowired
@@ -154,11 +156,17 @@ public class CheckViewBizAuthAspect {
 		if(!interruptCheck){
 			log.info("num:{}", num);
 			log.info("token:{}", request.getHeader("token"));
-			SSOUser user = ssoLoginHelper.getSsoUser(request.getHeader("token"));
+			SSOUser user = jmgaSSOLoginHelper.getSsoUser(request.getHeader("token"));
+			JyUser jyUser = jyUserService.getBySysUserId(user.getId().intValue());
 			log.info("user:{}", JSON.toJSONString(user));
 			ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+			if(Objects.isNull(scenePlus)){
+				flag = false;
+				errorCode = ErrorCode.FAILURE_CODE_5005.code();
+				errorMsg = ErrorCode.FAILURE_CODE_5005.message();
+			}
 			log.info("scenePlus:{}", scenePlus);
-			if(Objects.isNull(scenePlus.getUserId()) || !user.getId().equals(scenePlus.getUserId())){
+			if(Objects.isNull(scenePlus.getUserId()) || Objects.isNull(jyUser) || jyUser.getUserId() != scenePlus.getUserId().intValue()){
 				flag = false;
 				errorCode = ErrorCode.AUTH_FAIL.code();
 				errorMsg = "无权访问";

+ 2 - 0
src/main/java/com/fdkankan/scene/service/IJyUserService.java

@@ -17,4 +17,6 @@ public interface IJyUserService extends IService<JyUser> {
 
     JyUser getByJyNo(String jyNo);
 
+    JyUser getBySysUserId(Integer sysUserId);
+
 }

+ 5 - 0
src/main/java/com/fdkankan/scene/service/impl/JyUserServiceImpl.java

@@ -27,4 +27,9 @@ public class JyUserServiceImpl extends ServiceImpl<IJyUserMapper, JyUser> implem
     public JyUser getByJyNo(String jyNo) {
         return this.getOne(new LambdaQueryWrapper<JyUser>().eq(JyUser::getRyNo, jyNo));
     }
+
+    @Override
+    public JyUser getBySysUserId(Integer sysUserId) {
+        return this.getOne(new LambdaQueryWrapper<JyUser>().eq(JyUser::getSysUserId, sysUserId));
+    }
 }

+ 33 - 0
src/main/java/com/fdkankan/scene/util/JmgaSSOLoginHelper.java

@@ -0,0 +1,33 @@
+package com.fdkankan.scene.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.web.user.SSOLoginHelper;
+import com.fdkankan.web.user.SSOUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class JmgaSSOLoginHelper{
+
+    private static final String TOKEN_KEY_FROMAT = "manage:login:token:%s";
+
+    @Resource
+    private RedisUtil redisUtil;
+
+    public SSOUser getSsoUser(String token) {
+        if (token != null && token.trim().length() > 0) {
+            String tokenKey = String.format(TOKEN_KEY_FROMAT, token);
+            String objectValue = this.redisUtil.get(tokenKey);
+            SSOUser ssoUser = JSONObject.parseObject(objectValue, SSOUser.class);
+            if (ssoUser != null) {
+                return ssoUser;
+            }
+        }
+
+        return null;
+    }
+
+}