Quellcode durchsuchen

upgrade Config.

deason vor 6 Jahren
Ursprung
Commit
bac0115b7a

+ 63 - 0
examcloud-core-print-starter/src/main/java/cn/com/qmth/examcloud/core/print/config/ExamCloudResourceManager.java

@@ -0,0 +1,63 @@
+/*
+ * *************************************************
+ * Copyright (c) 2019 QMTH. All Rights Reserved.
+ * Created by Deason on 2019-05-05 15:18:42.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.core.print.config;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.AccessApp;
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.support.cache.CacheHelper;
+import cn.com.qmth.examcloud.support.cache.bean.AppCacheBean;
+import cn.com.qmth.examcloud.web.redis.RedisClient;
+import cn.com.qmth.examcloud.web.security.ResourceManager;
+import cn.com.qmth.examcloud.web.support.ApiInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ExamCloudResourceManager implements ResourceManager {
+    @Autowired
+    private RedisClient redisClient;
+
+    @Override
+    public AccessApp getAccessApp(Long appId) {
+        AppCacheBean appCacheBean = CacheHelper.getApp(appId);
+        AccessApp app = new AccessApp();
+        app.setAppId(appCacheBean.getId());
+        app.setAppCode(appCacheBean.getCode());
+        app.setAppName(appCacheBean.getName());
+        app.setSecretKey(appCacheBean.getSecretKey());
+        app.setTimeRange(appCacheBean.getTimeRange());
+        return app;
+    }
+
+    @Override
+    public boolean isNaked(ApiInfo apiInfo, String mapping) {
+        if (null == apiInfo) {
+            return true;
+        }
+
+        if (null != apiInfo) {
+            Integer id = apiInfo.getId();
+
+            if (null != id) {
+                if (id.equals(103)) {
+                    return true;
+                }
+            } else {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean hasPermission(User user, ApiInfo apiInfo, String mapping) {
+        return true;
+    }
+
+}

+ 44 - 0
examcloud-core-print-starter/src/main/java/cn/com/qmth/examcloud/core/print/config/ExamCloudWebMvcConfigurer.java

@@ -0,0 +1,44 @@
+/*
+ * *************************************************
+ * Copyright (c) 2019 QMTH. All Rights Reserved.
+ * Created by Deason on 2019-05-05 15:18:42.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.core.print.config;
+
+import cn.com.qmth.examcloud.web.interceptor.FirstInterceptor;
+import cn.com.qmth.examcloud.web.security.RequestPermissionInterceptor;
+import cn.com.qmth.examcloud.web.security.ResourceManager;
+import cn.com.qmth.examcloud.web.security.RpcInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class ExamCloudWebMvcConfigurer implements WebMvcConfigurer {
+    @Autowired
+    private ResourceManager resourceManager;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        String[] excludes = new String[]{"/", "/init", "/doc.html"};
+        registry.addInterceptor(new FirstInterceptor()).addPathPatterns("/api/**").excludePathPatterns(excludes);
+        registry.addInterceptor(new RpcInterceptor()).addPathPatterns("/api/**").excludePathPatterns(excludes);
+
+        RequestPermissionInterceptor permissionInterceptor = new RequestPermissionInterceptor(resourceManager);
+        registry.addInterceptor(permissionInterceptor).addPathPatterns("/api/**").excludePathPatterns(excludes);
+    }
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*")
+                .allowCredentials(false)
+                .allowedMethods("POST")
+                .maxAge(3600);
+    }
+
+}

+ 0 - 81
examcloud-core-print-starter/src/main/java/cn/com/qmth/examcloud/core/print/config/InterceptorConfig.java

@@ -1,81 +0,0 @@
-/*
- * *************************************************
- * Copyright (c) 2018 QMTH. All Rights Reserved.
- * Created by Deason on 2018-10-17 16:34:17.
- * *************************************************
- */
-
-package cn.com.qmth.examcloud.core.print.config;
-
-import cn.com.qmth.examcloud.api.commons.security.bean.Role;
-import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.commons.util.PathUtil;
-import cn.com.qmth.examcloud.commons.util.PropertiesUtil;
-import cn.com.qmth.examcloud.web.interceptor.FirstInterceptor;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
-import cn.com.qmth.examcloud.web.security.RequestPermissionInterceptor;
-import cn.com.qmth.examcloud.web.security.SpringCloudInterceptor;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-import java.util.List;
-
-/**
- * @author: fengdesheng
- * @since: 2018/10/17
- */
-@Configuration
-public class InterceptorConfig extends WebMvcConfigurerAdapter {
-    @Autowired
-    private RedisClient redisClient;
-
-    static {
-        PropertiesUtil.configure(PathUtil.getResoucePath("security-mapping.properties"));
-    }
-
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(new FirstInterceptor()).addPathPatterns("/**");
-        SpringCloudInterceptor springCloudInterceptor = new SpringCloudInterceptor();
-        registry.addInterceptor(springCloudInterceptor).addPathPatterns("/**");
-        //springCloudInterceptor.setRedisClient(redisClient);todo
-
-        RequestPermissionInterceptor requestPermissionInterceptor = getRequestPermissionInterceptor();
-        requestPermissionInterceptor.configure("security-exclusions.conf");
-        registry.addInterceptor(requestPermissionInterceptor).addPathPatterns("/**");
-        super.addInterceptors(registry);
-    }
-
-    @Bean
-    public RequestPermissionInterceptor getRequestPermissionInterceptor() {
-        return new RequestPermissionInterceptor(redisClient) {
-            @Override
-            public boolean hasPermission(String mappingPath, User user) {
-                List<Role> roleList = user.getRoleList();
-                if (CollectionUtils.isEmpty(roleList)) {
-                    return false;
-                }
-
-                String roles = PropertiesUtil.getString(mappingPath);
-                if (StringUtils.isBlank(roles)) {
-                    return true;
-                }
-
-                roles = "," + roles + ",";
-
-                for (Role role : roleList) {
-                    if (roles.contains("," + role.getRoleCode() + ",")) {
-                        return true;
-                    }
-                }
-                return false;
-            }
-        };
-    }
-
-}

+ 1 - 4
examcloud-core-print-starter/src/main/java/cn/com/qmth/examcloud/core/print/config/RedisConfig.java

@@ -11,9 +11,6 @@ import cn.com.qmth.examcloud.web.support.CustomResponseErrorHandler;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.cloud.client.loadbalancer.LoadBalanced;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -24,7 +21,7 @@ import org.springframework.web.client.RestTemplate;
  * @author: fengdesheng
  * @since: 2018/10/17
  */
-@Configuration
+//@Configuration
 public class RedisConfig {
 
     //@Bean