spring security更改spring_security_login表单

nok*_*eat 2 java spring jsp spring-security

我正在使用spring security,我想知道如何更改默认登录表单

我发现我需要指向我的新表单位置.我想保留现有默认表单的现有功能,显示所有登录异常.所以我必须先知道如何重现它.

在我的研究中,我遇到了它

http://www.codercorp.com/blog/spring/security-spring/spring-security-login-logout-form.html

谢谢他的代码

<%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %>
<%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
<%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.AuthenticationException" %>

<html>
  <head>
    <title>Login</title>
  </head>

  <body>
    <h1>Login</h1>

    <c:if test="${not empty param.login_error}">
      <font color="red">
        Your login attempt was not successful, try again.<br/><br/>
        Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
      </font>
    </c:if>

    <form name="f" action="<c:url value='j_spring_security_check'/>" method="POST">
      <table>
        <tr><td>User:</td><td><input type='text' name='j_username' value='<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>'/></td></tr>
        <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr>
        <tr><td><input type="checkbox" name="_spring_security_remember_me"></td><td>Don't ask for my password for two weeks</td></tr>

        <tr><td colspan='2'><input name="submit" type="submit"></td></tr>
        <tr><td colspan='2'><input name="reset" type="reset"></td></tr>
      </table>
    </form>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是代码似乎不适合春天安全3.一些过时的库我逐一替换它们.我将它们更改为以下内容

<%@ page import="org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" %>
<%@ page import="org.springframework.security.core.AuthenticationException" %>
Run Code Online (Sandbox Code Playgroud)

但它仍然拒绝报告登录错误.还有什么我应该尝试?

axt*_*avt 5

使用自定义登录页面时,Spring Security不会自动指定登录页面因登录错误而显示.你应该手动完成,通常是通过添加一个参数authentication-failure-url,你的代码需要一个名为的参数login_error:

<form-login 
    login-page="/login.htm" 
    authentication-failure-url = "/login.htm?login_error=1" />
Run Code Online (Sandbox Code Playgroud)