Camunda。答复提交后无法创建会话

问题描述 投票:0回答:1

我今天试了一下Camunda企业版,发现这个问题。

java.lang.IllegalStateException: Cannot create a session after the response has been committed
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2993)
    at org.apache.catalina.connector.Request.getSession(Request.java:2432)
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:908)
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920)
    at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:68)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at com.parkway.camunda.config.filter.CorsFilter.doFilterInternal(CorsFilter.java:25)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
    ...

不知道这是不是一个错误?只发生在

Spring-Boot:  (v2.2.1.RELEASE)
Camunda BPM: (v7.12.0-ee)
Camunda BPM Spring Boot Starter: (v3.4.0)

我已经用同样的一套代码试过了,但在以下情况下工作正常

Spring-Boot:  (v2.2.1.RELEASE)
Camunda BPM: (v7.10.0)
Camunda BPM Spring Boot Starter: (v3.2.0)

谁能帮我检查一下? 谢谢。

camunda camunda-modeler
1个回答
0
投票

在网上搜索了一天,终于找到了问题所在。

究其根本原因。 因为我在Camunda网站外调用REST API,没有开启认证机制,也没有使用apiabcdo-something。

参考资料:http://docs.camunda.orgmanual7.6referencerestoverviewauthentication。https:/docs.camunda.orgmanual7.6referencerestoverviewauthentication。

REST API附带了HTTP Basic Authentication的实现。默认情况下,它是关闭的。

任何不针对特定引擎的请求(例如,它不是引擎{name}...这样的形式)都会对默认引擎进行认证。

解决方法。

  1. 改变API路径。from /api/abc/do-something -> /engine/api/abc/do-something
  2. 通过添加这个配置类来开启认证(如果你使用的是Spring Boot)。
@Configuration
public class CamundaSecurityFilter {

    @Bean
    public FilterRegistrationBean processEngineAuthenticationFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setName("camunda-auth");
        registration.setFilter(getProcessEngineAuthenticationFilter());
        registration.addInitParameter("authentication-provider",
                "org.camunda.bpm.engine.rest.security.auth.impl.HttpBasicAuthenticationProvider");
        registration.addUrlPatterns("/*");
        return registration;
    }

    @Bean
    public Filter getProcessEngineAuthenticationFilter() {
        return new ProcessEngineAuthenticationFilter();
    }
}

感谢这个家伙。https:/forum.camunda.orgtturn-onbasic-http-authentication-for-rest-api-in-spring-boot3431。

© www.soinside.com 2019 - 2024. All rights reserved.