如何调试Spring安全授权注解?

How to debug Spring Security authorization annotations?

我有 spring 安全应用程序,想要在其中启用注释安全性(预授权和 post 授权)。 我还有一个小示例应用程序,我已经在其中实现了它。一切正常。 但是将配置移动到主应用程序失败了。控制台中没有错误。但是注释不起作用。看起来,他们根本没有被阅读过。 所有配置和组件版本完全相同

<security:global-method-security secured-annotations="enabled" /> 

安全上下文和 servlet 上下文中的记录。 但是 @Controller 方法和 @Service 方法都没有在主应用程序中使用注释来保护。

如何调试它?

已解决!

从 < global-method-security secured-annotations="enabled" /> 切换到 pre/post 注释工作正常。

将 org.springframework.security 的日志级别设置为调试。在调用带有注释的方法时,您可以找到指示正在应用拦截器的日志消息,尤其是查找: 调试方法安全拦截器

更新: 这意味着您的示例应用程序和主应用程序之间存在一些配置差异 要查找的一些提示:

您可以添加到您的 application.yaml:

logging.level.org.springframework.security: DEBUG

或添加到application.properties

logging.level.org.springframework.security=DEBUG

或者添加到您的 WebSecurityConfig 注释 EnableWebSecurity debug = true:

@Configuration
@EnableWebSecurity(debug = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  // ...
}

如果您只想知道哪个方法失败了,只需为此异常过滤器设置日志记录级别:

logging.level.org.springframework.security.web.access.ExceptionTranslationFilter: TRACE

它只会显示失败方法的堆栈跟踪,不会向您的日志发送不必要的垃圾邮件 ;-)