在Spring Security的登录页面上显示错误消息的问题

时间:2011-11-17 18:01:15

标签: spring-security

我已在我的应用程序中集成了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>

当我输入错误的凭据时,会将其重定向到登录页面,但不会显示该消息。

如果我做错了,请帮助并纠正我。

1 个答案:

答案 0 :(得分:1)

问题已解决。

未绘制错误消息的真正原因是${not empty param.error}未被评估。

要解决此问题,请修改我的web.xml以符合Servlet 2.5规范。它就像一个魅力。 :)

请参阅我的帖子,将Servlet规范更改为v2.5

Issue with evaluating ${error} in Spring

希望这有助于所有可能面临此问题的人。