为什么我的自定义登录页面在Spring Security 4中不显示?

我可以在Spring Security 3.2.4中使用自定义登录页面,但是在使用4.0.0迁移以下代码后,我看到的是通用登录表单,而不是我的自定义表单:

  <beans:bean id="authSuccessHandler" class="com.company.web.RoleBasedAuthenticationSuccessHandler" />

<http disable-url-rewriting="false" use-expressions="true">

<form-login login-page="/login"

username-parameter="j_username"

password-parameter="j_password"

login-processing-url="/j_spring_security_check"

authentication-failure-url="/login?login_error=true"

authentication-success-handler-ref="authSuccessHandler"/>

<!-- SOME INTERCEPT-URLs (redacted) -->

<intercept-url pattern="/login" access="permitAll"/>

<remember-me

remember-me-parameter="_spring_security_remember_me"

remember-me-cookie="SPRING_SECURITY_REMEMBER_ME_COOKIE"/>

<logout

logout-url="/j_spring_security_logout"

logout-success-url="/index" />

</http>

我还尝试在各种Spring类上启用调试日志记录。我在自定义authSuccessHandler上进行了设置,但是看不到任何输出。在SO或Google上搜索也没有运气。

此配置有什么不兼容的地方吗?

我也这样使用Apache Tiles:

  <definition name="login" extends="scrollableLayout">

<put-attribute name="header" value="/WEB-INF/jsp/heading_blue.jsp"/>

<put-attribute name="body" value="/WEB-INF/jsp/login.jsp"/>

</definition>

并使用以下命令:

  <mvc:view-controller path="/login" />

回答:

Spring Security

3.x用作spring_security_login默认的登录URL(source:官方文档)。可以将其设置为as的自定义值,<security:form-login login-

page="/login">并将其映射到控制器以呈现自定义页面。

Spring Security

4.x已放弃spring_security_login并切换login为默认登录URL(source:官方Spring Security

4.x迁移指南)。因此,URL login现在转到默认的Spring Security基础结构,该基础结构显示默认的自动生成的登录页面。

如果使用JSP作为视图呈现技术,则补救方法很简单。只需将登录页面重命名为login.jsp,将其放在页面层次结构的根文件夹中,Spring

Security就会自动将其选中。如果您不使用JSP,则必须使用其他login-

page值(也许signin代替,login然后也更改控制器映射。

请注意,默认注销URL在4.x中也已更改。如果您为注销URL编写了任何自定义逻辑,请确保也进行检查。

请复查正式的迁移指南,因为4.x中的很多事情都已更改。

以上是 为什么我的自定义登录页面在Spring Security 4中不显示? 的全部内容, 来源链接: utcz.com/qa/403278.html

回到顶部