我有这个春天的安全配置:
<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>
如果我输入网址,则需要access="isAuthenticated()
,我会重定向到home.jsp
。
我想看403错误。
如何改变?
答案 0 :(得分: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>
答案 1 :(得分: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>