2

我正在实施 Spring Security 并且我有一个自定义登录表单,例如:

<c:if test="${not empty param.error}">
  <div class="errorblock">
    LOGIN ERROR<br/>
    Reason: ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}<br/>
  </div>
</c:if>

<form method="POST" action="<c:url value="/j_spring_security_check"/>">
    ...
</form>

到目前为止一切顺利,显示的原因符合预期(即,Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed如果我的数据库已关闭)

我希望能够显示更用户友好的消息,例如“数据库问题,请联系管理员”

我尝试添加typeMismatch.org.hibernate.TransactionException=Unable to connect to databse, please contact an admin到我messages.properties已经用来覆盖 Spring security auth 异常的内容,请参阅如何在 jsp 中为 spring security auth 异常显示自定义错误消息

我不太确定如何“调用”此自定义错误消息。

谢谢你的帮助。

4

1 回答 1

1

您引用的线程中的方法仅在您想要更改现有 Spring 消息的消息时才有效,您可以在 security-core jar 内的 message.properties 文件中看到该消息。所以这对你想做的事情不起作用。您可以在失败时定向到另一个控制器(请参阅 authentication-failure-url)并在那里执行您想要的任何自定义错误处理,然后显示您的登录表单视图,以显示您构建的消息。

于 2012-10-19T12:38:32.507 回答