Spring Security:access-denied-handler没有转发到错误页面

时间:2015-02-22 20:09:29

标签: spring-mvc spring-security access-denied

我刚从船上搬到Spring Security,请原谅我,如果这看起来非常微不足道......

我尝试将Spring Security机制放在我的MVC项目中,但由于某种原因,访问被拒绝处理程序不会将未经授权的用户发送到被拒绝的访问页面,而是选择显示登录页面。 / p>

这是我在security-context.xml中的Http标记:

<http authentication-manager-ref="dao-auth"
    access-decision-manager-ref="accessDecisionManager"
    disable-url-rewriting="true">
    <intercept-url pattern="/pages/home.html" access="USER"></intercept-url>
    <intercept-url pattern="/home" method="GET" access="USER"></intercept-url>
    <intercept-url pattern="/logout" access="USER"></intercept-url>
    <intercept-url pattern="/denied" access="ROLE_ANONYMOUS"></intercept-url>
    <intercept-url pattern="/error" access="ROLE_ANONYMOUS,USER"></intercept-url>
    <intercept-url pattern="/"  access="ROLE_ANONYMOUS,USER"></intercept-url>
    <intercept-url pattern="/pages/**" access="ROLE_ANONYMOUS,USER"></intercept-url>
    <intercept-url pattern="/resources/**" access="ROLE_ANONYMOUS,USER"></intercept-url>
    <form-login login-page="/login" authentication-failure-url="/denied" 
        default-target-url="/home" />
    <logout invalidate-session="true" logout-success-url="/"
        logout-url="/logout" />
    <access-denied-handler error-page="/denied" />
    <session-management invalid-session-url="/login">
        <concurrency-control max-sessions="1"
            expired-url="/login" />
    </session-management>
</http>

基本上我测试它的方式是我尝试从ROLE_ANONYMOUS用户访问/ home路径,而是被抛到/ login路径。

另外,无法弄清楚如何调试这个东西或者我在哪里找到日志(感觉就像那里有某个地方......)

感谢所有响应者:)

1 个答案:

答案 0 :(得分:0)

1.Spring安全性首先在安全上下文中查找Authentication对象。如果在安全上下文中找不到身份验证对象(基本上是主体),它将引导您进入登录页面。

2.如果它找到了Authentication对象,那么它将使用委托人的权限进行授权。

3.当出现登录屏幕时,用户输入的凭据经过身份验证,如果未经过身份验证,则可以抛出错误的凭据异常以显示拒绝访问错误。