如何解决尝试调试Spring Boot Rest应用程序时发生未授权的错误
我正在使用Rest Controllers开发Spring Boot应用程序。
当我尝试使用Intellij IDEA调试应用程序时,右键单击MyApplication> Debug或Run> Debug,该应用程序将启动,并且调试器表示已连接。 但是我的控制器内部没有任何断点被触发,并且所有请求都因401未经授权而开始失败。如果我在没有调试的情况下运行,则一切正常。
如果某项拒绝状态为401的所有传入请求,这就是未触发断点的原因。我的代码永远不会执行。但是,为什么请求在调试模式下以401失败?
解决方法
我将尝试用您提供的有限信息来回答这个问题(没有代码,也没有最少的可复制示例)。
Spring security使用面向方面的编程来提供安全性机制,它通过执行一些额外的代码来实现此目的,这些代码不是您使用代理编写的代码的一部分。面向方面的编程可以通过以下方式执行一些额外的代码
- 之前:执行代码之前先执行代码
- 之后:在您的方法之后执行代码
- 返回后:代码成功返回后将执行代码
- AfterThrowing:代码在您的代码引发异常后被执行
- 全面:代码在执行之前和之后执行
为了安全起见,通常在方法之前执行此操作。因此,首先进行检查,以查看在这种情况下您是否被授权。在这种情况下,您就不会执行该方法。
,如下更改主类的@SpringBootApplication批注即可解决此问题。
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
这将排除并禁用Spring Boot的有关安全性的自动配置。它会尝试使用默认用户和生成的密码来保护API。
但是我仍然不明白为什么仅在调试时激活此安全性自动配置,而在正常运行时却保持禁用状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。