spring security authentication required页面

时间:2011-12-22 21:06:44

标签: security spring authentication login

我使用Spring Security 3.0.7

我在配置文件中有一个Web安全规则,允许只对经过身份验证的用户访问某些页面:

<intercept-url pattern="/faces/paginas/secured/**" access="isAuthenticated()"/>

当匿名用户尝试访问任何这些页面时,将呈现登录表单,以便输入用户名和密码。

这是默认行为。

但有没有办法渲染自定义页面而不是登录表单? (例如,只显示“拒绝访问”等消息的页面)

3 个答案:

答案 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" />