Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Filtro com Jersey

Bom dia, tudo bem?

Estou implementando o login/autenticação de usuário em minha aplicação.

O front-end é feito com AngularJS. O back-end é uma API RESTful, onde utilizo o Jersey (JAX-RS).

Eu estou usando um Filter para validar o token do usuário a cada requisição.

@Provider
public class AutenticacaoFilter implements ContainerRequestFilter {

    @Inject
    private IAutenticacaoService service;

    private static final String AUTHENTICATION_HEADER = "Authorization";

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        String token = requestContext.getHeaderString(AUTHENTICATION_HEADER);
        // autentica token do usuário
        ...
    }

}

Quero saber como faço para ignorar esse filtro somente no login? Que é quando o usuário se autentica e recebe o token.

2 respostas

Estou fazendo desta forma:

@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
    final String loginURI = "/myapp/api/login";

    String URI = requestContext.getUriInfo().getAbsolutePath().getPath();
    if (!URI.contains(loginURI)) {
        String token = requestContext.getHeaderString(AUTHENTICATION_HEADER);

        if (!service.autenticar(token)) {
            throw new WebApplicationException(Status.UNAUTHORIZED);
        }
    }
}

Só não sei se é a melhor maneira. Peço que me ajudem!

solução!

Oi Wh, esse é o melhor jeito e mais tradicional sim :), parabéns!