Я использую форму входа в Facelets для Spring Security:
<h:messages globalOnly="true" layout="table" />
<h:form id="formLogin" prependId="false">
<h:outputLabel for="j_username" value="Usuario:" />
<h:inputText id="j_username" value="#{autenticacionController.administrador.login}" />
<h:outputLabel for="j_password" value="Contraseña:" />
<h:inputSecret id="j_password" value="#{autenticacionController.administrador.password}" />
<h:commandButton value="Entrar" action="#{autenticacionController.loginAction}" />
<h:commandButton value="Cancelar" immediate="true" action="#{autenticacionController.cancelarAction}" />
</h:form>`
Метод loginAction перенаправляет запрос следующим образом:
FacesContext.getCurrentInstance().getExternalContext().dispatch("/j_spring_security_check")
Это отлично работает, но как я могу отобразить лицо лица в моем теге h: messages, если Spring Security выдает исключение BadCredentials?
Я знаю, что это можно сделать с помощью слушателя фазы, но мне не нравится этот способ (работа с исключениями в слушателях).
Я пытаюсь по-другому настроить Spring Security следующим образом:
authentication-failure-url="/faces/paginas/autenticacion/login.xhtml?error=1
А затем на странице входа поймайте параметр GET «ошибка». Но как я могу показать сообщение лица таким образом?
Другой способ, которым я пытался, - переопределить файл свойств сообщений Spring Security (переопределяя сообщение для ключа «badcredentials»), но он также не работал (я не знал, как показать сообщение). 1016 *
Кто-нибудь знает, как это сделать?
Заранее большое спасибо.