Spring Security-自定义登录表单在提交时不调用AuthenticationProvider
已解决: SpringSecurity4似乎不再提供默认的登录处理url。我们现在必须以如下形式显式地提供它Spring Security-自定义登录表单在提交时不调用AuthenticationProvider,spring,security,login,authenticator,Spring,Security,Login,Authenticator,已解决: SpringSecurity4似乎不再提供默认的登录处理url。我们现在必须以如下形式显式地提供它 login-processing-url="/j_spring_security_check" 我有一种奇怪的行为组合,这让我感到困惑。找到了很多教程和类似的问题,但没有一个完全像这样。我希望有人能帮忙 Short version:重新显示登录页面-无论用户名/密码是好是坏,都不会调用AuthenticationProvider(断点未触发) 长版本: 步骤1-成功 我能够将spr
login-processing-url="/j_spring_security_check"
我有一种奇怪的行为组合,这让我感到困惑。找到了很多教程和类似的问题,但没有一个完全像这样。我希望有人能帮忙 Short version:重新显示登录页面-无论用户名/密码是好是坏,都不会调用AuthenticationProvider(断点未触发) 长版本: 步骤1-成功
- 我能够将spring安全性与默认的AuthenticationProvider和默认的自动生成登录屏幕一起使用。好
- 我能够编写自定义的AuthenticationProvider和UserDetailsService。使用默认的自动生成的登录屏幕,一切正常。好
- 。。。所以以上排除了很多可能的问题
<sec:form-login
login-processing-url="/j_spring_security_check"
login-page="/login.htm"
authentication-failure-url="/login.htm?error"
username-parameter="username"
password-parameter="password"
/>
<sec:logout logout-success-url="/login.htm?logout"/>
<sec:csrf/>
4) 我创建了一个简单的login.jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Login</title>
</head>
<body onload="document.loginForm.username.focus()">
<h1>Login form</h1>
<div>
<h2>Username and Password</h2>
<c:if test="${not empty error}">
<div style="color: red">${error}</div>
</c:if>
<c:if test="${not empty msg}">
<div style="color: green">${msg}</div>
</c:if>
<form name="loginForm" action="<c:url value='j_spring_security_check' />" method='POST'>
<table>
<tr>
<td>User:</td>
<td><input type='text' name='username' value = '' /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='password' /></td>
</tr>
<tr>
<td colspan='2'><input name="submit" type="submit" value="submit" /></td>
</tr>
<tr><td colspan='2'>[${not empty webUser}]</td></tr>
</table>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
</div>
</body>
</html>
登录
登录表格
用户名和密码
${error}
${msg}
用户:
密码:
[${不是空的webUser}]
5) 然后我在Eclipse中设置了一些断点,以查看它的行为
- 登录页面显示良好
- 我输入用户名和密码并点击提交
- 好的或坏的用户名和密码都会导致相同的行为,即重新显示登录页面
- AuthenticationProvider中的断点永远不会被触发
我打赌我的错误对于熟悉SpringSecurity的人来说是微不足道的。我要提前向所有抓到它的人表示感谢。这个问题已经解决了 SpringSecurity4似乎不再提供默认的登录处理url。我们现在必须以如下形式显式地提供它
login-processing-url="/j_spring_security_check"
登录处理url=“/j_spring_security_check”
我的头撞在墙上好几个小时后,我偶然发现了解决办法。我希望这对其他处于同样情况的人有所帮助。这个问题已经解决了 SpringSecurity4似乎不再提供默认的登录处理url。我们现在必须以如下形式显式地提供它
login-processing-url="/j_spring_security_check"
登录处理url=“/j_spring_security_check”
我的头撞在墙上好几个小时后,我偶然发现了解决办法。我希望这对其他处于同样情况的人有所帮助