我正在使用Rest Controllers开发Spring Boot应用程序。
当我尝试使用Intellij IDEA调试应用程序时,右键单击MyApplication> Debug或Run> Debug,该应用程序将启动,并且调试器表示已连接。 但是我的控制器内部没有任何断点被触发,并且所有请求都因401未经授权而开始失败。如果我在没有调试的情况下运行,则一切正常。
如果某项拒绝状态为401的所有传入请求,这就是未触发断点的原因。我的代码永远不会执行。但是,为什么请求在调试模式下以401失败?
答案 0 :(得分:0)
我将尝试用您提供的有限信息来回答这个问题(没有代码,也没有最少的可复制示例)。
Spring security使用面向方面的编程来提供安全性机制,它通过执行一些额外的代码来实现此目的,这些代码不是您使用代理编写的代码的一部分。面向方面的编程可以通过以下方式执行一些额外的代码
为了安全起见,通常在方法之前执行此操作。因此,首先进行检查,以查看在这种情况下您是否被授权。在这种情况下,您就不会执行该方法。
答案 1 :(得分:0)
如下更改主类的@SpringBootApplication批注即可解决此问题。
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
这将排除并禁用Spring Boot的有关安全性的自动配置。它会尝试使用默认用户和生成的密码来保护API。
但是我仍然不明白为什么仅在调试时激活此安全性自动配置,而在正常运行时却保持禁用状态。