0

我有这个弹簧安全配置:

<http auto-config="true" use-expressions="true">

        <intercept-url pattern="/home.jsp" access="permitAll" />
        <intercept-url pattern="/loginFailed" access="permitAll" /> 
        <intercept-url pattern="/logOut" access="permitAll" />
        <intercept-url pattern="/*" access="isAuthenticated()" /> 

    <form-login login-page="/home.jsp" default-target-url="/index"
            authentication-failure-url="/loginFailed" />
        <logout  logout-success-url="/logOut"/>
    </http>

    <authentication-manager>
      <authentication-provider>
        <user-service>
            <user name="N_a" password="12" authorities="ROLE_USER" />
        </user-service>
      </authentication-provider>
    </authentication-manager>

如果我输入 url,那需要access="isAuthenticated()我重定向到home.jsp. 我想看看 403 错误。如何改变它?

4

2 回答 2

0

您正在使用基于表单的登录,因此,当未通过身份验证时,系统将提示您登录页面。这是您配置的内容,这也是默认情况下 Spring Security 的工作方式。

如果你想覆盖它,你需要明确配置一个AuthenticationEntryPoint精确的Http403ForbiddenEntryPoint. 如果有人未经身份验证或无权访问,这基本上总是给出 403。这将禁用使用登录表单提示用户更改登录的功能。

<beans:bean id="entryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />

<http auto-config="true" use-expressions="true" entry-point-ref="entryPoint"> 
<!-- Your other elements here -->
</http>
于 2013-10-08T13:01:06.753 回答
0

http标签中使用access-denied-handler标签。

http://www.mkyong.com/spring-security/customize-http-403-access-denied-page-in-spring-security/

或使用access-denied-page属性。

<http auto-config="true" access-denied-page="/403"></http>
于 2013-10-08T13:16:34.210 回答