JSF 2 + Spring Security 3.1.x @Secured AccessDeniedException处理

时间:2012-11-08 13:54:53

标签: jsf spring-security

我想问一下如何处理(例如捕获,记录和重定向流)来自'安全注释'的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");
}

没有这样处理。

1 个答案:

答案 0 :(得分:0)

这篇文章有点老了,所以我想你不再需要答案了。仍在为其他人回答:

第一:你是对的:<access-denied-handler ref="myAccessDeniedHandler" />只处理资源请求,所以你需要一些不同的东西来处理由你自己的代码或Spring-Security抛出的@PreAuthorize所引发的AccessDeniedExceptions。

你可以做的是使用Spring-AOP / AspectJ来编写一个带有切入点的切入点,这个切入点引用所有使用特定注释注释的方法(在你的情况下为@PreAuthorize)

有关处理@Secured - 注释

的示例,请参阅JSF2 with SpringSecurity: handle AccessDeniedException of @Secured-Annotation