我想问一下如何处理(例如捕获,记录和重定向流)来自'安全注释'的AccessDeniedException(@PreAuthorize,@ Secure等等)?
我尝试设置自己的AccessDeniedHandler:
<http auto-config="true" use-expressions="true">
...
<access-denied-handler ref="myAccessDeniedHandler" />
</http>
但似乎它只拦截了当我试图获取未经授权的资源时引发的异常。
但来自
的例外@PreAuthorize("hasRole('ROLE_ADMIN')")
public void myMethod(){
System.out.println("Secret Method");
}
没有这样处理。
答案 0 :(得分:0)
这篇文章有点老了,所以我想你不再需要答案了。仍在为其他人回答:
第一:你是对的:<access-denied-handler ref="myAccessDeniedHandler" />
只处理资源请求,所以你需要一些不同的东西来处理由你自己的代码或Spring-Security抛出的@PreAuthorize
所引发的AccessDeniedExceptions。
你可以做的是使用Spring-AOP / AspectJ来编写一个带有切入点的切入点,这个切入点引用所有使用特定注释注释的方法(在你的情况下为@PreAuthorize)
有关处理@Secured
- 注释