gpt4 book ai didi

java - Spring Security - 输入无效密码后无法登录

转载 作者:行者123 更新时间:2023-12-01 05:22:49 25 4
gpt4 key购买 nike

我刚刚设置了 Spring Security,它运行得很好。我可以使用我的自定义表单登录和退出。我已经连续登录然后退出多次,没有问题。奇怪的是,如果我尝试使用错误的密码登录,我将无法再登录 - 此后每次尝试登录时都会进入“loginFailed”页面。有谁知道如何解决这个问题吗?

这是我的 security-config.xml:

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">


<http use-expressions="true">
<intercept-url pattern="/secureA.htm" access="isAuthenticated()" />
<intercept-url pattern="/secureB.htm" access="isAuthenticated()" />
<form-login login-page="/login.htm" default-target-url="/secureA.htm"
authentication-failure-url="/loginFailed.htm"/>
<logout logout-success-url="/login" />
</http>

<authentication-manager>
<authentication-provider>
<password-encoder hash="sha">
</password-encoder>
<user-service>
<user name="user" password="pass"
authorities="ROLE_USER, ROLE_ADMIN" />
</user-service>
</authentication-provider>
</authentication-manager>

</beans:beans>

我的登录表单:

<form action="<c:url value='j_spring_security_check' />" method="post">
Username:&nbsp;<input type="text" name="j_username" /><br/>
Password:&nbsp;<input type="password" name="j_password" /><br/>
<input type="submit" value="Login" /><br/>
</form>

我的登录 Controller :

@Controller
public class LoginController {

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String welcome(ModelMap m) {
return "login";
}

@RequestMapping(value = "/loginFailed", method = RequestMethod.GET)
public String failed(ModelMap m) {
m.addAttribute("error", "Invalid username or password");
return "login";
}

@RequestMapping("logout.htm")
public String logout(ModelMap m) {
return "redirect:login.htm";
}
}

最佳答案

如果您返回到登录的同一页面,则模型将继续执行。由于您要向该模型添加属性,因此您可能会检查该属性是否在 View 页面上设置。一旦设置完毕,在 session 对象被清除之前,没有任何东西可以取消它的设置。

要确认,请更改此设置:

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String welcome(ModelMap m) {
System.out.println(m.getAttribute("error");
return "login";
}

然后检查您的控制台。

关于java - Spring Security - 输入无效密码后无法登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com