SpringBoot 引入 Activiti7 导致 web 调用 server 接口提示 Unauthorized 问题解决

2025年11月19日 19:55 · 阅读(112) ·

接口定义如下

Contract

  1. @FeignClient(value = "xxx-service",
  2. fallbackFactory = ConsumerFallback.class,
  3. configuration = { NotBreakerConfiguration.class})
  4. public interface Test1Consumer {
  5. @ApiOperation(value = "获取数据列表")
  6. @GetMapping("/test1/getList")
  7. ResponseVO<List<Test1>> getList();
  8. }

Server

  1. @Slf4j
  2. @RestController
  3. @RequestMapping("/test1")
  4. public class Test1Controller {
  5. @Resource
  6. private ITest1Service test1Service;
  7. @GetMapping("/getList")
  8. public ResponseVO<List<Test1>> getList(){
  9. List<Test1> datas = test1Service.getList();
  10. ResponseVO<List<Test1>> responseVO = new ResponseVO<>();
  11. responseVO.setData(datas);
  12. return responseVO;
  13. }
  14. }

Web

  1. @Slf4j
  2. @RestController
  3. @RequestMapping("/test1")
  4. public class Test1Controller {
  5. @Resource
  6. private Test1Consumer test1Consumer;
  7. @GetMapping("/getList")
  8. public ResponseVO<List<Test1>> getList(){
  9. return test1Consumer.getList();
  10. }
  11. }

问题描述

  • 没有引入 Activiti7 之前,调用 /test1/getList 能够正常返回数据。
  • 引入之后,调用接口报错
  1. {
  2. "timestamp": "2025-11-19T07:00:48.589+0000",
  3. "status": 401,
  4. "error": "Unauthorized",
  5. "message": "Unauthorized",
  6. "path": "/test1/getList"
  7. }

问题分析

Server 服务引入了 Activiti7

  1. <!-- 工作流 -->
  2. <dependency>
  3. <groupId>org.activiti</groupId>
  4. <artifactId>activiti-spring-boot-starter</artifactId>
  5. <version>7.0.0.SR1</version>
  6. <exclusions>
  7. <exclusion>
  8. <artifactId>mybatis</artifactId>
  9. <groupId>org.mybatis</groupId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>

Activiti7 包含了 Security

问题解决

在Springboot集成Activiti工作流引擎-引入、调用,测试【基础讲解】 中提到 “activiti 默认集成了 Security 安全框架,当前我们项目里已经集成了 Security 后续设置审批人必须是系统用户否则会报错”

那么解决办法就是排除掉 Security

参考了 SpringBoot整合Activiti并排除Security(Activiti7) ,在启动类加入以下注解后,问题解决

  1. @SpringBootApplication(exclude = {
  2. // activiti 默认集成了 Security 安全框架
  3. // 这会导致此服务的所有接口都必须进行校验,否则调用会提示 "status":401,"error":"Unauthorized"
  4. // 这里排除掉这个 Security,保证接口能正确调用
  5. org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
  6. })