Yo no hacer que funcione con la solución propuesta, esto es lo que encontré: (Uso primavera 3.1).
En su clase de fitler:
CharsetFilter implements Filter {
@OVerride public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest) request;
if (hsr.getUserPrincipal() == null) {
HttpSession session = hsr.getSession();
if (!(hsr == null)) {
logger.info("path : " + hsr.getPathInfo());
session.setAttribute("beforeLoginUrl", hsr.getPathInfo());
}
}
}
Entonces i tu web.xml declaran su filtro:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>com.ent.foo.CharsetFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
Luego, en su URL de redirección después del inicio de sesión correcto acaba de obtener el HttpSession vuelta:
@RequestMapping(value = "successful")
public void showSuccessfulogin (HttpSession session) {
String redirectUrl = (String) session.getAttribute("beforeLoginUrl");
if (redirectUrl != null) {
session.removeAttribute("beforeLoginUrl");
return "redirect:" + redirectUrl;
}
return "redirect:/";
}
Aquí tienes las cosas para que funcione, pero h Ave para comprobar el
hsr.getPathInfo()
y ver si se termina con css o js, etc ...
Además, si el inicio de sesión fallan usted debe ver si ya está atributo de sesión establecer y ver cualquier otro caso especial!
Por cierto, mi filtro se utilizó anteriormente para formatear todas las entradas/salidas en utf-8.
Espero que ayude a cualquiera.
Creo que debe crear dos páginas de inicio de sesión diferentes, con el filtro correspondiente. –
Alois, gracias por responder, ¿conoces algún ejemplo de cómo hacerlo? Soy nuevo en la seguridad de primavera ... ¡gracias! – c12