Spring Security - 身份验证失败 - 空白消息

Posted

技术标签:

【中文标题】Spring Security - 身份验证失败 - 空白消息【英文标题】:Spring Security - Authentication Failure - Blank Message 【发布时间】:2015-05-13 09:36:17 【问题描述】:

我正在开发一个 spring-mvc 网络应用程序。

如果用户输入了错误的凭据,我想在我的登录页面上显示一条错误消息。

所以我尝试使用 spring security 来显示错误消息,但我无法显示任何消息。

login.jsp

对于登录表单,我已将其绑定为:

<form method="post" action="<c:url value='/j_spring_security_check' />" id="loginForm">
.... login ui
</form>

用于显示错误:

<c:if test="$not empty param.error">
    <div>
        <c:out value="$SPRING_SECURITY_LAST_EXCEPTION.message"/>
    </div>
</c:if> 

security-context.xml

<form-login login-page="/login" default-target-url="/home" always-use-default-target="false" authentication-failure-url="/login?error=true" />

启用所有这些选项后,仍然无法在提供的错误凭据上显示错误消息。

如果您需要任何其他信息,请告诉我。

PS:快速说明一下,整个配置和应用程序都可以正常工作。用户可以登录。我已经扩展了 UserDetailsContextMapper,并且对于匿名用户我抛出了一个异常 UsernameNotFoundException

【问题讨论】:

你有没有试过把测试改成&lt;c:if test="$not empty SPRING_SECURITY_LAST_EXCEPTION"&gt; @jny: 我试过了.. 那是空的:( 【参考方案1】:

我终于找到了问题所在。此消息存储在会话中,并且我保留在我的页面上:

<%@ page session="false"%>

我改成:

<%@ page session="true"%>

它开始工作了。我得到的另一个好信息是,毕竟如果您想显示自定义错误消息,覆盖这些消息非常简单。详细信息请参考this链接。

【讨论】:

以上是关于Spring Security - 身份验证失败 - 空白消息的主要内容,如果未能解决你的问题,请参考以下文章

Spring-Security:MySQL JDBC 身份验证失败

Grails Spring Security 插件身份验证失败

使用 AuthenticationFailureHandler 在 Spring Security 中自定义身份验证失败响应

Spring Security - 身份验证失败 - 空白消息

身份验证失败 - grails spring security中的错误凭据

Spring security rest 插件:身份验证失败,未找到 AuthenticationProvider