Spring Security,Spring MVC,PreAuthorise注释和异常处理

时间:2014-12-22 16:18:55

标签: spring-security spring-security-cas

我正在努力应对Spring Security和异常处理。

我在servlet-context中配置了以下异常处理程序:

   <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="/errors/general-error"/>
        <property name="defaultStatusCode" value="500" />
        <property name="warnLogCategory" value="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"/>
    </bean>

捕获任何未捕获的异常,并显示一般错误页面。

我还使用CAS单点登录服务器配置了Spring Security。如果在我的安全配置中,我有以下内容:

<security:intercept-url pattern="/secure/**" access="hasRole('USER')" />

如果未经身份验证的用户访问“/ secure”,则会将其正确重定向到登录状态,然后返回并查看该页面。

我更喜欢在MVC方法上使用PreAuthorise()注释,而不必手动定义URL。相反,如果我有以下注释:

    @PreAuthorize("hasRole('USER')")
    @RequestMapping("/secure")
    public String displaySecurePage(
...
}

没有发生重定向到CAS SSO服务器,Spring只显示常规错误页面,异常org.springframework.security.access.AccessDeniedException: Access is denied

为什么定义访问权限的两种方式之间存在差异,如何在Spring中使用PreAuthorise注释正确指导未经身份验证的用户登录,仍然具有一个异常处理程序来捕获其他异常?

0 个答案:

没有答案