Validar token de sessão no springboot | Java para Web | Alura - Cursos online de tecnologia
Fórum Programação | Java para Web
Validar token de sessão no springboot
(124.4k xp, 14 posts)
Olá pessoal, estamos criando uma nova aplicação com springboot aqui na empresa. E o que eu preciso fazer é uma forma de validar o token que receberemos no cabeçalho do request, antes da chamada do método mapeado com o @RequestMapping
Esse trecho de código abaixo é um exemplo de como nossos código irão ficar.
@RequestMapping(value="/report", produces = { "application/json; charset=utf-8" }, method = RequestMethod.GET)
logger.debug("Olá");
String retorno = "{\"total\":10}";
Minha ideia é criar uma classe Pai que irá conter o método validateToken, que irá realizar a validação do token e se este estiver de qualquer forma inválido, então o método execute não será chamado.
Então minha dúvida é, como criar a classe Pai que conterá o método validateToken, que deverá ser chamado antes do método execute da classe Filho. E no caso da validação indicar que o token não está válido, finalizar a execução da chamada, não chamando o método execute da classe Filho.
Até agora, vi que posso colocar na classe Pai um método anotado com @ModelAttribute, e se eu lançar uma RuntimeException o método execute da classe Filho não é chamado, mas aí o stack da RuntimeException é exibido no console e ocorre um Whitelabel Error Page
public void validateToken() {
logger.debug("Validando o token");
throw new RuntimeException("Parou aqui no validateToken");
Abs, Tiago
Essa validação é para todo request? Você poderia utilizar um Filter: https://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/
Mas o que precisamos é que seja realizada essa verificação dentro da estrutura da classe, ou da classe mãe.
Pois a classe irá possuir algumas configurações, feitas por anotações e então se eu colocar a validação no filtro, o filtro não conterá essas informações.
Será que a melhor forma é criar uma exception personalizada? Pois sei que consigo configura-la para que ele retorne um http-code 401 por exemplo.