Estou tentando pegar a URL que fez a requisição, mas sempre retorna meu contexto/j_spring_security_check.
Estava pensando um forma de pegar essa URL “antes” do Spring… pois não consegui usar vários http pattern no spring-security.xml
versão do SpringSecurity 3.1
public class UrlAuthenticationSuccessHandler implements AuthenticationSuccessHandler{
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException {
handle(request, response, authentication);
clearAuthenticationAttributes(request);
}
protected void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException {
String targetUrl = determineTargetUrl(authentication,request);
if (response.isCommitted()) {
return;
}
redirectStrategy.sendRedirect(request, response, targetUrl);
}
protected String determineTargetUrl(Authentication authentication,HttpServletRequest request) {
System.out.println("minha URLLL ----------" + request.getRequestURI()); Deveria exibir a pagina de login que estou: http://localhost:8080/myApp/paginas/balcao/balcao.xhtml
Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
for (GrantedAuthority grantedAuthority : authorities) {
if (grantedAuthority.getAuthority().equals("ROLE_USUARIO")) {
return "/paginas/balcao/balcao.xhtml?faces-redirect=true";
}
return "/paginas/main/principal.xhtml";
}
protected void clearAuthenticationAttributes(HttpServletRequest request) {
HttpSession session = request.getSession(false);
if (session == null) {
return;
}
session.removeAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);
}
public void setRedirectStrategy(RedirectStrategy redirectStrategy) {
this.redirectStrategy = redirectStrategy;
}
protected RedirectStrategy getRedirectStrategy() {
return redirectStrategy;
}
}
Eu pretendo adicionar outra comparação: Se url = balcao e perfil = usuario -> redirecione para uma pagina especifica…
Olá thimor, tinha “deixado de lado” mas consegui resolver usando 2 <http pattern="/paginas/balcao/**" auto-config="false" use-expressions="true"> se sucesso redireciono para uma pagina especifica.