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 显示登录屏幕,用户输入的凭据已通过身份验证,如果未通过身份验证,则可以抛出错误凭据异常以显示拒绝访问错误。
我刚下船去 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 显示登录屏幕,用户输入的凭据已通过身份验证,如果未通过身份验证,则可以抛出错误凭据异常以显示拒绝访问错误。