自定义错误页面+ spring security 3 + hasPermission

时间:2011-11-22 11:09:15

标签: spring struts2 spring-security

如何在用户获取HTTP 500后无法查看页面时(如果没有特定权限)显示自定义错误页面 -

org.springframework.security.access.AccessDeniedException:访问被拒绝

自定义hasPermission()方法的异常。

您可以查看我之前的问题 here 以查看我的代码。

1 个答案:

答案 0 :(得分:3)

在struts2配置文件中,您可以配置全局例外,例如

<global-exception-mappings>
    <exception-mapping exception="org.springframework.security.access.AccessDeniedException" result="securityerror" />
     <exception-mapping exception="java.lang.Exception" result="error" />
   </global-exception-mappings>

  <global-results>
        <result name="securityerror">/securityerror.jsp</result>
    <result name="error">/error.jsp</result>
   </global-results>

如果您发现细粒度的异常处理事项,那么它将适用于应用程序级别,您可以为操作级别本身定义它

<action name="actionspecificexception" class="org.apache.struts.register.action.Register" method="throwSecurityException">
     <exception-mapping exception="org.springframework.security.access.AccessDeniedException" 
          result="login" />
      <result>/register.jsp</result>
      <result name="login">/login.jsp</result>
   </action>

所以这取决于你选择如何配置它。详情请参阅。

Exception handling in Struts2

我的建议是不要将每个异常作为原始异常抛出,更好地创建自己的异常包装器并将这些异常包装在其中它将帮助您以更好的方式组织代码

希望这会对你有所帮助。