Java spring security更改spring\u security\u登录表单

Java spring security更改spring\u security\u登录表单,java,spring,jsp,spring-security,Java,Spring,Jsp,Spring Security,我正在使用SpringSecurity,我想知道如何更改默认的登录表单 我发现我需要指向我的新表单位置。我希望保留现有默认表单的现有函数,该表单显示所有登录异常。所以我必须先知道如何复制它 在我的研究中,我遇到了它 谢谢他的密码 <%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %> <%@ page import="org.springframework.security.ui.AbstractProce

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

我发现我需要指向我的新表单位置。我希望保留现有默认表单的现有函数,该表单显示所有登录异常。所以我必须先知道如何复制它

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

谢谢他的密码

<%@ 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>
但是,对于SpringSecurity3来说,该代码似乎不起作用。有些图书馆已经过时了,我把它们一个一个地替换掉了。我把它们改成下面这个

<%@ page import="org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" %>
<%@ page import="org.springframework.security.core.AuthenticationException" %>

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

您是否记得更新您的Spring安全应用程序上下文xml配置?这是我的一个例子:

<http auto-config="true">
  <intercept-url pattern="/login.htm" access="ROLE_ANONYMOUS,ROLE_USER" />
  <intercept-url pattern="/**" access="ROLE_USER" />
  <form-login login-page="/login.htm" default-target-url="/home.htm" />
  <logout logout-url="/logout.htm" logout-success-url="/home.htm"/>
</http>

因此,表单登录标签允许您设置自定义登录页面。您还需要记住将登录页面的访问权限授予匿名角色,否则没有人能够访问登录页面。

当您使用自定义登录页面时,Spring Security不会自动指定由于登录错误而显示您的登录页面。您应该手动执行此操作,通常是通过向身份验证失败url添加一个参数,您的代码需要一个名为login\u error的参数:


我的登录页面出现了。但是当我试图让它报告登录错误时,它没有显示错误。我在想,如果jsp页面上有什么我错过了,或者是访问权限问题,那就是重点,谢谢!我没有意识到param.login_错误的原因是参数。。。
<form-login 
    login-page="/login.htm" 
    authentication-failure-url = "/login.htm?login_error=1" />