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

AuthorizeRequests

Depois que fiz o conteúdo da aula tentei ir em SecurityConfigurations e eliminei o

.antMathers(httpMethod.GET,"/topicos").permitAll()

Por que com o deletar me volta status 200 e no método lista o Page não retorna nada quando utiliza o token?

4 respostas

Oi Joao,

Pode postar aqui os códigos das classes SecurityConfigurations e TopicosController para eu entender melhor o que pode estar acontecendo?

Comentei "/topico" em security e esperava que exigisse autenticação ou o token para liberar a listagem mas não acontece isso, por que? O que falta?

    @GetMapping
    @ResponseBody
    @Cacheable(value = "listaDeTopicos")
    public Page<TopicoDto> lista(@RequestParam(required=false) String nomeCurso,
                                    @PageableDefault(sort = "id", direction = Direction.ASC, page = 0, size=20) Pageable paginacao) {

        //Pageable paginacao = PageRequest.of(pagina, qtd, Direction.ASC, ordenacao);

        if(nomeCurso == null) {
            Page<Topico> topicos = topicoRepository.findAll(paginacao);        
            return TopicoDto.convertTopicoParaDto(topicos);    
        }else {
            Page<Topico> topicos = topicoRepository.findByCurso_Nome(nomeCurso, paginacao);
            return TopicoDto.convertTopicoParaDto(topicos);
        }

    }    
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()
        //.antMatchers(HttpMethod.GET,"/topicos").permitAll()
        //.antMatchers(HttpMethod.GET,"/topicos/*").permitAll()
        .antMatchers(HttpMethod.POST,"/auth").permitAll()
        .antMatchers(HttpMethod.GET,"/actuator/**").permitAll()    
    //    .antMatchers(HttpMethod.GET,"/instances").permitAll()
        .anyRequest().authenticated()
        //.and().formLogin(); para não criar sessão pois não estamos utilizando token e cookie.        
        .and().csrf().disable()
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and().addFilterBefore(new AutenticacaoViaTokenFilter(tokenService, usuarioRepository), UsernamePasswordAuthenticationFilter.class);

    }    
solução!

Oi João,

Estranho, era para ter bloqueado o acesso sem o token.

Consegue compartilhar seu projeto para eu dar uma analisada?

Rodrigo, Na continuação do curso acabei vendo a parte de autorização com papel e acabou resolvendo o que eu estava querendo fazer! Obrigado.