Spring安全重定向,如果页面上没有访问权限

时间:2010-01-05 09:44:39

标签: redirect spring-security

我有一个使用spring web flow ang spring security的j2ee web应用程序。如果用户的角色在被访问的页面上没有访问权限,我想将用户重定向到页面(可能是错误页面),因为目前我收到了错误

错误404 - 未找到 来自RFC 2068超文本传输​​协议 - HTTP / 1.1: 10.4.5 404未找到 服务器未找到与Request-URI匹配的任何内容。没有说明该病症是暂时的还是永久性的。

如果服务器不希望将此信息提供给客户端,则可以使用状态代码403(禁止)。如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码。

如何进行此重定向。我尝试了security:http的access-denied-page属性,但我仍然收到错误。这是我对security-http的配置。

顺便说一下。我正在使用Spring Faces和Facelets。这可能是问题的原因吗?

<!-- Configure Spring Security -->
<security:http auto-config="true" access-denied-page="/deniedpage.xhtml" 
    session-fixation-protection="newSession">
    <security:intercept-url pattern="/main.do"
        access="ROLE_SUPERVISOR, ROLE_USER" />
    <security:intercept-url pattern="/logoutSuccess.do"
        access="ROLE_SUPERVISOR, ROLE_USER" />
    <security:intercept-url pattern="/edit.do" 
        access="ROLE_SUPERVISOR" />
    <security:intercept-url pattern="/register.do"
        access="ROLE_SUPERVISOR" />
    <security:intercept-url pattern="/admin_main.do"
        access="ROLE_SUPERVISOR" />
    <security:intercept-url pattern="/*"
        access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <security:form-login login-page="/loginForm.do"
        default-target-url="/main.do" authentication-failure-url="/loginForm.do?login_error=1" />
    <security:logout logout-url="/logout.do"
        invalidate-session="true" logout-success-url="/logoutSuccess.do" />
    <security:concurrent-session-control
        max-sessions="-1" exception-if-maximum-exceeded="true" expired-url="/loginform.do" />

</security:http>

1 个答案:

答案 0 :(得分:5)

安全性:http 访问被拒绝页面属性应该足够了,向我们展示您正在使用的Spring配置。
在此期间,请尝试将其添加到 web.xml

<error-page>
    <error-code>404</error-code>
    <location>notfound.jsp</location>
</error-page>