2
respostas

Pegar classe autenticada com JWT

Olá,

Estou com um pequeno problema para encapsular uma classe!

Dentro do meu projeto eu tenho uma classe onde ele busca a classe Empresa dentro do meu usuario logado (AppUser.class)

Porem não estou conseguindo pegar esta classe pois meu Authentication é com Token! Gostaria de saber como posso fazer para pegar essa classe Empresa


@Component
public class UsuarioAutenticado {

    private AppUser getUsuarioAutenticado()
    {
        UserDetails authentication = (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if(authentication != null){
            Object obj = authentication;
            if (obj instanceof AppUser){
                return (AppUser) obj;
            }        
        }
        return null;

    }

    public Empresa getEmpresa() {
        Empresa empresa = getUsuarioAutenticado().getEmpresa();
        return empresa;
    }


}
2 respostas

Fala aí Luis tudo bem?

Então mas dado esse token você sabe a qual empresa pertence?

Olá Fernando!

Então cara, dei mais uma pesquisada e talvez um dos problemas é que meu token não está cadastrando o meu objeto do usuário (AppUser), o token deveria encapsular o usuario que foi verificado no banco de dados!

Eu to estudando aqui a lógica do JWT com Spring Security mas entendi em parte seu funcionamento!

Ou seja, de alguma forma ele não ta resgatando o UserDetails;

Abaixo estou enviando a minha classe de autenticação o qual faz a verificação do login;

@RequestMapping(value = "/authenticate", method = RequestMethod.POST,consumes = MediaType.ALL_VALUE)
    public ResponseEntity<Map<String, Object>> login(@RequestParam String username, @RequestParam String password,

        HttpServletResponse response, HttpServletRequest request) throws IOException {
        String token = null;
        AppUser appUser = appUserRepository.findOneByUsername(username);
        Map<String, Object> tokenMap = new HashMap<String, Object>();

        if (appUser != null && appUser.getPassword().equals(password)) {
            String JWT = Jwts.builder()
                    .setSubject(username)
                    .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                    .signWith(SignatureAlgorithm.HS512, SECRET)
                    .compact();

            response.addHeader(HEADER_STRING, TOKEN_PREFIX + " " + JWT);

            tokenMap.put("token",TOKEN_PREFIX + " " + JWT);


            return new ResponseEntity<Map<String, Object>>(tokenMap, HttpStatus.OK);
        } else {
            tokenMap.put("token", null);
            return new ResponseEntity<Map<String, Object>>(tokenMap, HttpStatus.UNAUTHORIZED);
        }


    }

}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software