如何调试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 的日志级别设置为调试。在调用带有注释的方法时,您可以找到指示正在应用拦截器的日志消息,尤其是查找:
调试方法安全拦截器
更新:
这意味着您的示例应用程序和主应用程序之间存在一些配置差异
要查找的一些提示:
标记需要与您的 Spring MVC 配置位于同一上下文中,否则您的控制器将不会被 post 处理。参考:
http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/faq.html#faq-method-security-in-web-context
您可能需要预 post-annotations="enabled",并设置了 expressionHandler。
确保标记 在应用程序上下文中
您可以添加到您的 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
它只会显示失败方法的堆栈跟踪,不会向您的日志发送不必要的垃圾邮件 ;-)
我有 spring 安全应用程序,想要在其中启用注释安全性(预授权和 post 授权)。 我还有一个小示例应用程序,我已经在其中实现了它。一切正常。 但是将配置移动到主应用程序失败了。控制台中没有错误。但是注释不起作用。看起来,他们根本没有被阅读过。 所有配置和组件版本完全相同
有
<security:global-method-security secured-annotations="enabled" />
安全上下文和 servlet 上下文中的记录。 但是 @Controller 方法和 @Service 方法都没有在主应用程序中使用注释来保护。
如何调试它?
已解决!
从 < global-method-security secured-annotations="enabled" /> 切换到 pre/post 注释工作正常。
将 org.springframework.security 的日志级别设置为调试。在调用带有注释的方法时,您可以找到指示正在应用拦截器的日志消息,尤其是查找: 调试方法安全拦截器
更新: 这意味着您的示例应用程序和主应用程序之间存在一些配置差异 要查找的一些提示:
标记需要与您的 Spring MVC 配置位于同一上下文中,否则您的控制器将不会被 post 处理。参考: http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/faq.html#faq-method-security-in-web-context 您可能需要预 post-annotations="enabled",并设置了 expressionHandler。
确保标记
在应用程序上下文中
您可以添加到您的 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
它只会显示失败方法的堆栈跟踪,不会向您的日志发送不必要的垃圾邮件 ;-)