4
respostas

Falha ao buildar projeto :: UsernamePasswordAuthenticationToken.class

Estou chamando o UsernamePasswordAuthenticationToken.clss nesse trecho de codigo:

Build output:

java: incompatible types: java.lang.Class<org.springframework.security.authentication.UsernamePasswordAuthenticationToken> cannot be converted to java.lang.Class<? extends javax.servlet.Filter>

Código:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers(HttpMethod.GET, "/api/costumer").permitAll()
                .antMatchers(HttpMethod.GET, "/api/costumers/*").permitAll()
                .antMatchers(HttpMethod.POST, "/auth").permitAll()
                .anyRequest().authenticated()
                .and().csrf().disable()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and().addFilterBefore(new AuthenticationViaTokenFilter(), UsernamePasswordAuthenticationToken.class);
    }
public class AuthenticationViaTokenFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        String token = retrieveToken(request);


        filterChain.doFilter(request, response);
    }

    private String retrieveToken(HttpServletRequest request) {
        String token = request.getHeader("Authorization");
        if(token == null || token == "" || !token.startsWith("Bearer ")){
            return null;
        }

        return token.substring(7, token.length());
    }
}

Tenho meus endpoints diferentes, porém não estou entendendo o motivo desse erro.. Alguém pode me ajudar?

4 respostas

Oi Guilherme,

nessa linha:

.and().addFilterBefore(new AuthenticationViaTokenFilter(), UsernamePasswordAuthenticationToken.class);

Você referenciou a classe incorreta: UsernamePasswordAuthenticationToken. Na verdade a classe tem que ser a UsernamePasswordAuthenticationFilter:

.and().addFilterBefore(new AuthenticationViaTokenFilter(), UsernamePasswordAuthenticationFilter.class);

Bons estudos!

Humm booa! Obrigado. Agora estou com um outro problema, crei uma tabela de ROLES no meu banco de dados, e não consigo fazer um usuario ganhar permissões. Pois as tabelas então como "Read only", sabe dizer o que pode estar acontecendo?

Qual url você disparou?

Pela suas configurações essas urls estão publicas:

.antMatchers(HttpMethod.GET, "/api/costumer").permitAll()
.antMatchers(HttpMethod.GET, "/api/costumers/*").permitAll()
.antMatchers(HttpMethod.POST, "/auth").permitAll()

Humm booa! Obrigado. Agora estou com um outro problema, crei uma tabela de ROLES no meu banco de dados, e não consigo fazer um usuario ganhar permissões. Pois as tabelas então como "Read only", sabe dizer o que pode estar acontecendo?