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、データベースがダウンしている場合) 。

「データベースに問題があります。管理者に連絡してください」など、よりユーザー フレンドリーなメッセージを表示できるようにしたいと考えています。

Spring セキュリティ認証例外をオーバーライドするために既に使用していたものにtypeMismatch.org.hibernate.TransactionException=Unable to connect to databse, please contact an admin追加しようとしました。Spring セキュリティ認証例外のカスタム エラー メッセージを jsp に表示する方法を参照してください。messages.properties

このカスタム エラー メッセージを「呼び出す」方法がよくわかりません。

ご協力いただきありがとうございます。

4

1 に答える 1

1

参照するスレッドのメソッドは、既存の Spring メッセージのメッセージを変更する場合にのみ機能します。これは、security-core jar 内の message.properties ファイルで確認できます。したがって、それはあなたがやろうとしていることにはうまくいきません。失敗時に別のコントローラーに移動し (authentication-failure-url を参照)、そこで必要なカスタム エラー処理を行ってから、作成したメッセージを表示するログイン フォーム ビューを表示できます。

于 2012-10-19T12:38:32.507 に答える