Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro quando tenta Autenticar

Criei o projeto de acordo com as aulas do Spring Boot para criar uma APRI Rest.

Após está tudo funcionando comecei a mudar para algumas configurações como o banco de dados que estava apontando para h2 para um banco Oracle e funcionou normalmente.

Quando comecei a mudar para fazer a autenticação do usuário foi que deu problema. segue abaixo o códigos fontes que foram alterardos.

package br.com.alura.forum.modelo;

import java.util.ArrayList; import java.util.Collection; import java.util.List;

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.MapsId; import javax.persistence.OneToOne; import javax.persistence.SecondaryTable;

import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails;

@Entity public class Usuario implements UserDetails {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
private String login;
private String senha;

@ManyToOne
@JoinColumn(name = "id_perfil_padrao")
private Perfil perfil;



@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}



@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Usuario other = (Usuario) obj;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    return true;
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public String getlogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

// @Override // public Collection<? extends GrantedAuthority> getAuthorities() { // return this.perfis; // }

@Override
public String getPassword() {
    return this.senha;
}

@Override
public String getUsername() {
    return this.login;
}

@Override
public boolean isAccountNonExpired() {
    return true;
}

@Override
public boolean isAccountNonLocked() {
    return true;
}

@Override
public boolean isCredentialsNonExpired() {
    return true;
}

@Override
public boolean isEnabled() {
    return true;
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    List<Perfil> perfis = new ArrayList<>();
    perfis.add(this.perfil);
    return perfis;
}

}

package br.com.alura.forum.modelo;

import java.util.List;

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Table;

import javax.persistence.OneToMany;

import org.springframework.security.core.GrantedAuthority;

import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity @Table(name = "perfil_acesso") public class Perfil implements GrantedAuthority {

private static final long serialVersionUID = 1L;

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String nome;

@OneToMany
@JoinColumn(name = "id_perfil_padrao") // Esta coluna está na tabela "usuario".
private List<Usuario> usuario;


public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
@Override
public String getAuthority() {

    return nome;
}

}

@Service public class AutenticacaoService implements UserDetailsService {

@Autowired
private UsuarioRepository repository;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

    Optional<Usuario> usuario = repository.findByLogin(username);

    if(usuario.isPresent()) {            
        return usuario.get();
    }

    throw new UsernameNotFoundException("Usuário Inválido!");
}

}

1 resposta
solução!

Oi Bruno,

Talvez o problema seja no @GeneratedValue(strategy = GenerationType.IDENTITY) de todas as entidades, pois no Oracle você deve utilizar sequence para a geração dos id's.

Dá uma pesquisada em como mapear entidades na JPA utilizando Sequence no banco de dados e ajuste o seu código.

Bons estudos!