¿Cómo convierto JSP (etiquetas personalizadas) al Código en un servlet en la primavera de Seguridad?
-
11-09-2019 - |
Pregunta
Estoy trabajando en un proyecto en el que tengo que incluir algún código de un JSP . Este JSP tiene el código de la siguiente manera (en relación con Spring Security ) ...
<%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %>
<%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
<%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.AuthenticationException" %>
....
<c:if test="${not empty param.login_error}">
<font color="red">
Your login attempt was not successful, try again.<br/><br/>
Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
</font>
</c:if>
....
<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>
...
Esto es lo que he intentado comprobar en mi servlet:
enumr = request.getAttributeNames();
while(enumr.hasMoreElements())
{
String element = enumr.nextElement()+"";
out.print("<h3>Read an element:");
out.print(element+" » ");
out.print(request.getAttribute(element));
out.print("</h3>");
}
y la salida correspondiente:
Read an element:__spring_security_session_fixation_filter_applied » true
Read an element:__spring_security_filterSecurityInterceptor_filterApplied » true
Read an element:hibernateFilter.FILTERED » true
Read an element:__spring_security_session_integration_filter_applied » true
Read an element:requestContextFilter.FILTERED » true
Una conjetura es que puedo concluir un error en la lectura, _spring_security_filterSecurityInterceptor_filterApplied representa que ha ocurrido un error.
¿Cómo llego a leer el mensaje de error?
Solución
En primer lugar: no está utilizando Facelets. Está utilizando JSP. Esos dos son ambas tecnologías visión independiente de Sol, en donde Facelets es más o menos visto como JSP en esteroides. Por lo que este tema está etiquetada erróneamente con Facelets.
En segundo lugar: el código HTML etiqueta está obsoleta desde HTML 4.01 en 1998. Se debe utilizar CSS
.Volver a su problema: No hago la primavera, así que no puedo ir a fondo en detalle, pero he comprobado la sesión en ámbito attribtues? Buscar en Google rápidamente el botón de "SPRING_SECURITY_LAST_EXCEPTION.message" me entera de que se almacena en el ámbito de la sesión.
Otros consejos
Funciona:
String keyToSearch = AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY;
Object value = request.getSession().getAttribute(keyToSearch);
Gracias una vez más BalusC