Lak*_*o12 6 java spring-security spring-test maven spring-boot
安全配置类
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConf {
@Bean
public AuthenticationManager authenticationManagerBean(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
}
Run Code Online (Sandbox Code Playgroud)
控制器
@RestController
public class Controller {
@GetMapping("/test")
public String test(){
return "test";
}
}
Run Code Online (Sandbox Code Playgroud)
测试班
@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = Controller.class)
@ComponentScan("com.example.demo")
public class DemoApplicationTests {
@Test
public void test() {
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的应用程序,如果我尝试启动主应用程序,它可以工作,但是当我启动测试类时,我收到此错误:
java.lang.StackOverflowError
at java.base/java.lang.StackTraceElement.of(StackTraceElement.java:526)
at java.base/java.lang.Throwable.getOurStackTrace(Throwable.java:828)
at java.base/java.lang.Throwable.getStackTrace(Throwable.java:820)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:79)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
and it always continues the same way ...
Run Code Online (Sandbox Code Playgroud)
在调试中我尝试恢复错误但我只看到这个java.lang.IllegalStateException: Failed to unwrap proxied object.
该测试仅在我删除authenticationManagerBean但需要authenticationManagerBean注入AutthenticationManager我的应用程序时才有效。
我知道我可以使用WebSecurityConfigurerAdapter然后添加 bean 来覆盖此类的方法。但由于WebSecurityConfigurerAdapter已弃用,我不想使用它。
这个问题是由于我已经从WebSecurityConfigurerAdapterSecurityFilterChain 切换到 SecurityFilterChain 并且在更改配置类时收到此错误
我创建了这个简单的项目,它复制了我的主项目的错误。如果您尝试启动该应用程序,它可以工作,但测试却不能。https://github.com/lako12/demo
项目很简单,只有3个类加上一个测试类。
我在 spring github 上打开了一个问题,它被报告为一个错误,将由 spring 框架版本 5.3.24 修复。这是讨论的链接。 https://github.com/spring-projects/spring-framework/issues/29215
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |