diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/Inner.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/Inner.java
index 82d7e4966..1ac962247 100644
--- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/Inner.java
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/Inner.java
@@ -21,11 +21,11 @@ import java.lang.annotation.*;
/**
* @author lengleng
- * @date 2018/11/26
+ * @date 2019/4/13
*
- * 服务调用不鉴权注解
+ * 服务调用鉴权注解
*/
-@Target(ElementType.METHOD)
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Inner {
diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PermitAllUrlProperties.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PermitAllUrlProperties.java
index c45cb0bfb..fd9c2d89c 100644
--- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PermitAllUrlProperties.java
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PermitAllUrlProperties.java
@@ -17,26 +17,68 @@
package com.pig4cloud.pigx.common.security.component;
-import lombok.Data;
+import cn.hutool.core.util.ReUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.regex.Pattern;
/**
* @author lengleng
- * @date 2018/11/10
+ * @date 2019/4/13
*
- * 资源服务器对外直接暴露URL
+ * 资源服务器对外直接暴露URL,如果设置contex-path 要特殊处理
*/
-@Data
+@Slf4j
@Configuration
-@RefreshScope
@ConditionalOnExpression("!'${security.oauth2.client.ignore-urls}'.isEmpty()")
@ConfigurationProperties(prefix = "security.oauth2.client")
-public class PermitAllUrlProperties {
+public class PermitAllUrlProperties implements InitializingBean {
+ private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}");
+ @Autowired
+ private WebApplicationContext applicationContext;
+
+ @Getter
+ @Setter
private List ignoreUrls = new ArrayList<>();
+
+ @Override
+ public void afterPropertiesSet() {
+ RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
+ Map map = mapping.getHandlerMethods();
+
+ map.keySet().forEach(info -> {
+ HandlerMethod handlerMethod = map.get(info);
+
+ // 获取方法上边的注解 替代path variable 为 *
+ Inner method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Inner.class);
+ Optional.ofNullable(method)
+ .ifPresent(inner -> info.getPatternsCondition().getPatterns()
+ .forEach(url -> ignoreUrls.add(ReUtil.replaceAll(url, PATTERN, StringPool.ASTERISK))));
+
+ // 获取类上边的注解, 替代path variable 为 *
+ Inner controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Inner.class);
+ Optional.ofNullable(controller)
+ .ifPresent(inner -> info.getPatternsCondition().getPatterns()
+ .forEach(url -> ignoreUrls.add(ReUtil.replaceAll(url, PATTERN, StringPool.ASTERISK))));
+ });
+
+ }
}
diff --git a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml
index d605fdfec..2d49d15e0 100644
--- a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml
+++ b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml
@@ -8,10 +8,7 @@ security:
ignore-urls:
- '/actuator/**'
- '/v2/api-docs'
- - '/service/**'
- '/editor-app/**'
- - '/task/view/*'
- - '/process/resource/**'
- '/modeler.html'
- '/ws/**'
spring:
diff --git a/pigx-config/src/main/resources/config/pigx-daemon-quartz-dev.yml b/pigx-config/src/main/resources/config/pigx-daemon-quartz-dev.yml
index 98166eba3..b7cccd59b 100644
--- a/pigx-config/src/main/resources/config/pigx-daemon-quartz-dev.yml
+++ b/pigx-config/src/main/resources/config/pigx-daemon-quartz-dev.yml
@@ -5,11 +5,6 @@ security:
client-id: ENC(tz2NM4GcmnE7sNJTYL8ZSg==)
client-secret: ENC(tz2NM4GcmnE7sNJTYL8ZSg==)
scope: server
- # 默认放行url,子模块重写时application-dev.yml中的公共配置会被覆盖,所以要把公共配置中的放行url再写一次
- ignore-urls:
- - /actuator/**
- - /v2/api-docs
- - /inner-job/**
# 数据源配置
spring:
diff --git a/pigx-config/src/main/resources/config/pigx-mp-manager-dev.yml b/pigx-config/src/main/resources/config/pigx-mp-manager-dev.yml
index 49280daac..faa2c2d43 100644
--- a/pigx-config/src/main/resources/config/pigx-mp-manager-dev.yml
+++ b/pigx-config/src/main/resources/config/pigx-mp-manager-dev.yml
@@ -5,10 +5,6 @@ security:
client-id: ENC(gPFcUOmJm8WqM3k3eSqS0Q==)
client-secret: ENC(gPFcUOmJm8WqM3k3eSqS0Q==)
scope: server
- ignore-urls:
- - /actuator/**
- - /v2/api-docs
- - /*/portal
# 数据源配置
spring:
diff --git a/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml b/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml
index 5c15fd21d..476953e76 100644
--- a/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml
+++ b/pigx-config/src/main/resources/config/pigx-upms-biz-dev.yml
@@ -5,14 +5,6 @@ security:
client-id: ENC(ltJPpR50wT0oIY9kfOe1Iw==)
client-secret: ENC(ltJPpR50wT0oIY9kfOe1Iw==)
scope: server
- # 默认放行url,子模块重写时application-dev.yml中的公共配置会被覆盖,所以要把公共配置中的放行url再写一次
- ignore-urls:
- - /actuator/**
- - /v2/api-docs
- - /user/info/*
- - /social/info/*
- - /mobile/*
- - /log/save
# 数据源
spring:
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java
index 1b376d4e9..e6d6d4e06 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java
@@ -19,6 +19,7 @@ package com.pig4cloud.pigx.admin.controller;
import com.pig4cloud.pigx.admin.service.MobileService;
import com.pig4cloud.pigx.common.core.util.R;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
@@ -39,6 +40,7 @@ import org.springframework.web.bind.annotation.RestController;
public class MobileController {
private final MobileService mobileService;
+ @Inner(value = false)
@GetMapping("/{mobile}")
public R sendSmsCode(@PathVariable String mobile) {
return mobileService.sendSmsCode(mobile);
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java
index 1cde0986e..83737ad70 100755
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java
@@ -17,6 +17,7 @@
package com.pig4cloud.pigx.admin.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.admin.api.dto.UserInfo;
import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails;
@@ -80,7 +81,7 @@ public class SysSocialDetailsServiceImpl extends ServiceImpl (String) auth2Authentication.getPrincipal());
return message;
- }else{
+ } else {
return null;
}
}
diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/EditorController.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/EditorController.java
index 7ddb4d4e7..c66cb683f 100644
--- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/EditorController.java
+++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/EditorController.java
@@ -18,16 +18,18 @@
package com.pig4cloud.pigx.act.controller;
import com.pig4cloud.pigx.act.service.EditorService;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* @author lengleng
- * @date 2018/9/25
+ * @date 2018/4/13
*/
+@Inner(value = false)
@RestController
-@RequestMapping("/service")
@AllArgsConstructor
+@RequestMapping("/service")
public class EditorController {
private final EditorService editorService;
diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/ProcessController.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/ProcessController.java
index cdea7af27..19ee8c0cc 100644
--- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/ProcessController.java
+++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/ProcessController.java
@@ -21,6 +21,7 @@ import cn.hutool.core.io.IoUtil;
import com.pig4cloud.pigx.act.service.ProcessService;
import com.pig4cloud.pigx.common.core.constant.enums.ResourceTypeEnum;
import com.pig4cloud.pigx.common.core.util.R;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
@@ -46,6 +47,7 @@ public class ProcessController {
return new R<>(processService.getProcessByPage(params));
}
+ @Inner(value = false)
@GetMapping(value = "/resource/{proInsId}/{procDefId}/{resType}")
public ResponseEntity resourceRead(@PathVariable String procDefId, @PathVariable String proInsId, @PathVariable String resType) {
diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/TaskController.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/TaskController.java
index 7aa8a26a5..d512e3670 100644
--- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/TaskController.java
+++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/controller/TaskController.java
@@ -21,6 +21,7 @@ import cn.hutool.core.io.IoUtil;
import com.pig4cloud.pigx.act.dto.LeaveBillDto;
import com.pig4cloud.pigx.act.service.ActTaskService;
import com.pig4cloud.pigx.common.core.util.R;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpHeaders;
@@ -57,6 +58,7 @@ public class TaskController {
return new R(actTaskService.submitTask(leaveBillDto));
}
+ @Inner(value = false)
@GetMapping("/view/{id}")
public ResponseEntity viewCurrentImage(@PathVariable String id) {
InputStream imageStream = actTaskService.viewByTaskId(id);
diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java
index 41f175e25..10c7c0e90 100644
--- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java
+++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java
@@ -67,7 +67,7 @@ public class DynamicDataSourceConfig implements TransactionManagementConfigurer
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(String.valueOf(db.get(DataSourceConstant.DS_JDBC_URL)));
ds.setDriverClassName(Driver.class.getName());
- ds.setUsername((String) db.get(DataSourceConstant.DS_NAME));
+ ds.setUsername((String) db.get(DataSourceConstant.DS_USER_NAME));
String decPwd = stringEncryptor.decrypt((String) db.get(DataSourceConstant.DS_USER_PWD));
ds.setPassword(decPwd);
diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/config/AutowireCapableBeanJobFactory.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/config/AutowireCapableBeanJobFactory.java
index 64b0e7647..ca5171fe7 100644
--- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/config/AutowireCapableBeanJobFactory.java
+++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/config/AutowireCapableBeanJobFactory.java
@@ -37,7 +37,7 @@ class AutowireCapableBeanJobFactory extends SpringBeanJobFactory {
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object jobInstance = super.createJobInstance(bundle);
this.beanFactory.autowireBean(jobInstance);
- this.beanFactory.initializeBean(jobInstance, (String) null);
+ this.beanFactory.initializeBean(jobInstance, null);
return jobInstance;
}
}
diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobController.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobController.java
index 96ab8adb6..e0db0a857 100644
--- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobController.java
+++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobController.java
@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import com.pig4cloud.pigx.daemon.quartz.entity.SysJob;
@@ -67,7 +66,6 @@ public class SysJobController {
@GetMapping("/page")
@ApiOperation(value = "分页定时业务查询")
public R getSysJobPage(Page page, SysJob sysJob) {
- sysJob.setTenantId(TenantContextHolder.getTenantId());
return R.builder().data(sysJobService.page(page, Wrappers.query(sysJob))).build();
}
@@ -97,7 +95,6 @@ public class SysJobController {
public R save(@RequestBody SysJob sysJob) {
sysJob.setJobStatus(JOB_STATUS_RELEASE.getType());
sysJob.setCreateBy(SecurityUtils.getUser().getUsername());
- sysJob.setTenantId(TenantContextHolder.getTenantId());
return R.builder().data(sysJobService.save(sysJob)).build();
}
diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobLogController.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobLogController.java
index ebf12c4c4..fd189174c 100644
--- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobLogController.java
+++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/controller/SysJobLogController.java
@@ -20,7 +20,6 @@ package com.pig4cloud.pigx.daemon.quartz.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder;
import com.pig4cloud.pigx.daemon.quartz.entity.SysJobLog;
import com.pig4cloud.pigx.daemon.quartz.service.SysJobLogService;
import io.swagger.annotations.Api;
@@ -53,7 +52,6 @@ public class SysJobLogController {
@GetMapping("/page")
@ApiOperation(value = "分页定时任务日志查询")
public R getSysJobLogPage(Page page, SysJobLog sysJobLog) {
- sysJobLog.setTenantId(TenantContextHolder.getTenantId());
return R.builder().data(sysJobLogService.page(page, Wrappers.query(sysJobLog))).build();
}
}
diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/task/RestTaskDemo.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/task/RestTaskDemo.java
index c20563c8b..2a43601e1 100644
--- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/task/RestTaskDemo.java
+++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/task/RestTaskDemo.java
@@ -1,6 +1,7 @@
package com.pig4cloud.pigx.daemon.quartz.task;
import com.pig4cloud.pigx.common.core.util.R;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -22,6 +23,7 @@ public class RestTaskDemo {
/**
* 测试REST风格调用定时任务的演示方法
*/
+ @Inner(value = false)
@GetMapping("/{param}")
public R demoMethod(@PathVariable("param") String param) {
log.info("测试于:{},传入参数{}", LocalDateTime.now(), param);
diff --git a/pigx-visual/pigx-mp-manager/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java b/pigx-visual/pigx-mp-manager/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java
index 583f530d5..eed66afc8 100755
--- a/pigx-visual/pigx-mp-manager/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java
+++ b/pigx-visual/pigx-mp-manager/src/main/java/com/pig4cloud/pigx/mp/controller/WxPortalController.java
@@ -2,6 +2,7 @@ package com.pig4cloud.pigx.mp.controller;
import cn.hutool.core.util.StrUtil;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.mp.config.WxMpConfiguration;
import com.pig4cloud.pigx.mp.config.WxMpContextHolder;
import lombok.extern.slf4j.Slf4j;
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
* 微信接入入口
*/
@Slf4j
+@Inner(value = false)
@RestController
@RequestMapping("/{appId}/portal")
public class WxPortalController {