我已在我的应用程序中集成了Spring Security,并希望在凭据错误的情况下向用户显示错误消息。
我已将所有内容连接到显示消息,但它不起作用。请在下面找到代码段
弹簧security.xml文件
<form-login
login-page="/spring/login"
authentication-failure-url="/spring/login?error=true"
default-target-url="/spring/index"/>
<authentication-manager>
<authentication-provider user-service-ref="customService">
</authentication-provider>
</authentication-manager>
CustomService实现UserDetailsService
,在loadUserByUsername
方法中,我返回包含用户详细信息的Spring UserDetails
对象。
我的控制器如下所示
@RequestMapping(value="/login", method = RequestMethod.POST)
public String getLogin(@RequestParam(value="error", required=false) boolean error,
ModelMap model){
if (error == true) {
// Assign an error message
model.put("error", "You have entered an invalid username or password!");
} else {
model.put("error", "");
}
return "loginpage";
}
我的登录页面包含以下div来绘制错误
<div id="login-error">
<c:if test="${not empty param.error}">
Your login attempt was not successful, try again.<br />
</c:if>
</div>
当我输入错误的凭据时,会将其重定向到登录页面,但不会显示该消息。
如果我做错了,请帮助并纠正我。
答案 0 :(得分:1)
问题已解决。
未绘制错误消息的真正原因是${not empty param.error}
未被评估。
要解决此问题,请修改我的web.xml以符合Servlet 2.5规范。它就像一个魅力。 :)
请参阅我的帖子,将Servlet规范更改为v2.5
Issue with evaluating ${error} in Spring
希望这有助于所有可能面临此问题的人。