Spring 安全性:拒绝访问处理程序不会转发到错误页面

Spring Security: access-denied-handler doesn't forward to error page

我刚下船去 Spring 安检所以如果这看起来微不足道,请原谅..

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

这是我在安全-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.Spring 安全首先在安全上下文中查找身份验证对象。如果在安全上下文中找不到身份验证对象(基本上是主体),它会将您定向到登录页面。

2.If找到Authentication对象,然后使用委托人的权限进行授权。

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