我在 Spring 安全测试中遇到 stackOverflowError

2024-03-27

安全配置类

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConf {

    @Bean
    public AuthenticationManager authenticationManagerBean(AuthenticationConfiguration authenticationConfiguration) throws Exception {
        return authenticationConfiguration.getAuthenticationManager();
    }

}

控制器

@RestController
public class Controller {
    
    @GetMapping("/test")
    public String test(){
        return "test";
    }
}

测试班

@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = Controller.class)
@ComponentScan("com.example.demo")
public class DemoApplicationTests {

    @Test
    public void test() {
    }
}

我有一个简单的应用程序,如果我尝试启动主应用程序,它会起作用,但是当我启动测试类时,我会收到此错误:

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 ...

在调试中我尝试恢复错误但我只看到这个java.lang.IllegalStateException: Failed to unwrap proxied object.

仅当我删除该测试时才有效authenticationManagerBean但是我需要authenticationManagerBean注射AutthenticationManager在我的应用程序中。

我知道我可以使用WebSecurityConfigurerAdapter然后添加要重写此类方法的 bean。但作为WebSecurityConfigurerAdapter已弃用,我不想使用它。

这个问题是由于我已经从WebSecurityConfigurerAdapter到 SecurityFilterChain 并在更改配置类时收到此错误

我创建了这个简单的项目,它复制了我的主项目的错误。如果您尝试启动应用程序,它可以工作,但测试却不能。https://github.com/lako12/demo https://github.com/lako12/demo

项目很简单,只有3个类加上一个测试类。


我在 spring github 上打开了一个问题,它被报告为一个错误,将由 spring 框架版本 5.3.24 修复。 这是讨论的链接。https://github.com/spring-projects/spring-framework/issues/29215 https://github.com/spring-projects/spring-framework/issues/29215

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我在 Spring 安全测试中遇到 stackOverflowError 的相关文章

  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set

随机推荐