我使用Spring Security 3.0.7
我在配置文件中有一个Web安全规则,允许只对经过身份验证的用户访问某些页面:
<intercept-url pattern="/faces/paginas/secured/**" access="isAuthenticated()"/>
当匿名用户尝试访问任何这些页面时,将呈现登录表单,以便输入用户名和密码。
这是默认行为。
但有没有办法渲染自定义页面而不是登录表单? (例如,只显示“拒绝访问”等消息的页面)
答案 0 :(得分:0)
正如Spring Security Documentation(第9.2节)中所写,您可以指定accessDeniedHandler来处理403错误(禁止):
<bean id="accessDeniedHandler"
class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
<property name="errorPage" value="/accessDenied.htm"/>
</bean>
在9.2.2节,您可以阅读:
默认使用AccessDeniedHandlerImpl,它只向客户端发送403(Forbidden)响应。或者,您可以显式配置实例(如上例所示)并设置一个错误页面URL,它将转发请求。这可以是简单的“访问被拒绝”页面,例如JSP,或者它可以是更复杂的处理程序,例如MVC控制器。当然,您可以自己实现界面并使用自己的实现。
答案 1 :(得分:0)
您必须通过
指定拒绝访问的页面<form-login login-page="/accessDenied.htm" />
要启用&#34;正常登录&#34;,您必须连接另一个将其登录表单提交到/ j_spring_security_check的页面(如果您不更改默认值)。
答案 2 :(得分:0)
为什么不将authentication-failure-url
属性添加到form-login
代码?
<form-login login-page="/login.htm"
default-target-url="/successview.htm"
always-use-default-target="true"
authentication-failure-url = "/accessdenied.htm?login_error=1" />