Cra*_*vis 5 security spring login
我想用我的自定义 login.jsp 表单显示一条错误消息。当出现错误时,url 是 ../loginForm?error 没有任何值分配给错误。(这似乎是 Spring Security 的行为。)如果没有错误,则 url 只是 ../loginForm (没有参数)。在控制器中,我可以使用@RequestParam 捕获参数,但是如何检查是否传递了错误?换句话说,如何在没有值的情况下单独测试参数?
这是我现在拥有的控制器代码:
@RequestMapping("/loginForm")
public String showLoginForm(@RequestParam(value="error", defaultValue="false")
boolean error,
Model model)
{
if (error == true)
{
model.addAttribute("loginError", "Invalid username and password.");
}
return "/user/loginForm";
}
Run Code Online (Sandbox Code Playgroud)
...这是 JSP 代码段:
<c:if test="${not empty loginError}">
<tr>
<td><c:out value="${loginError}" /></td>
</tr>
</c:if>
Run Code Online (Sandbox Code Playgroud)
在这一点上,我不包括我设置的安全配置,因为其他一切似乎都在工作,我想把重点放在手头的问题上。
在此先感谢您的任何建议!
好的,我想通了(休息时)。@RequestParam 仅在实际存在可用于映射的参数时才有效。如果没有传入这样的参数,那就没用了。因此,我检查了 ServletRequest 提供的 Map:
@RequestMapping("/loginForm")
public String showLoginForm(ServletRequest request, Model model)
{
Map<String, String[]> paramMap = request.getParameterMap();
if (paramMap.containsKey("error"))
{
model.addAttribute("loginError", "Invalid username and password.");
}
return "/user/loginForm";
}
Run Code Online (Sandbox Code Playgroud)
它现在工作正常。
| 归档时间: |
|
| 查看次数: |
5959 次 |
| 最近记录: |