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

Erro ao realizar Login

Quando tento acessar 'http://localhost:8080/casadocodigo/produtos/form' é direcionado para a página de login, porém ao digitar o usuário e senha não loga sempre da erro e vai para 'http://localhost:8080/casadocodigo/login?error'. Já verifiquei o email e senha e esta correto com a que foi inserida no banco.

@Entity
public class Role implements GrantedAuthority {

    private static final long serialVersionUID = 1L;
    @Id
    private String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String getAuthority() {
        return this.nome;
    }

}
@Entity
public class Usuario implements UserDetails {

    private static final long serialVersionUID = 1L;
    @Id
    private String email;
    private String senha;
    private String nome;

    @OneToMany(fetch=FetchType.EAGER)
    private List<Role> roles = new ArrayList<>();

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSenha() {
        return senha;
    }

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

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

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

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

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

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

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

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

    @Override
    public boolean isEnabled() {
        // TODO Auto-generated method stub
        return false;
    }

}
@Repository
public class UsuarioDAO implements UserDetailsService {

    @PersistenceContext
    private EntityManager manager;

    public Usuario loadUserByUsername(String email)
            throws UsernameNotFoundException {
        List<Usuario> usuarios = manager
                .createQuery("select u from Usuario u where email = :pEmail",Usuario.class)
                .setParameter("pEmail", email)
                .getResultList();

        if (usuarios.isEmpty()) {
            throw new UsernameNotFoundException("Usuário " + email
                    + " não foi encontrado");
        }

        return usuarios.get(0);
    }

}
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UsuarioDAO usuarioDao;

    /**
     * Configura os bloqueios e liberações das páginas Controlando as páginas
     * bloqueadas através do login do usuário
     **/
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/produtos/form").hasRole("ADMIN")
                .antMatchers("/carrinho/**").permitAll()
                .antMatchers("/produtos/").hasRole("ADMIN")
                .antMatchers("/produtos/**").permitAll()
                .antMatchers("/resources/**").permitAll()
                .antMatchers("/pagamento/**").permitAll().antMatchers("/")
                .permitAll().anyRequest().authenticated().and().formLogin()
                .loginPage("/login").defaultSuccessUrl("/produtos").permitAll()
                .and().logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .permitAll().logoutSuccessUrl("/login");
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth)
            throws Exception {
        auth.userDetailsService(usuarioDao).passwordEncoder(
                new BCryptPasswordEncoder());
    }
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Livros de Java, Android, iPhone, Ruby, PHP e muito mais -
    Casa do Código</title>
<c:url value="/resources/css" var="cssPath" />
<link rel="stylesheet" href="${cssPath}/bootstrap.min.css" />
<link rel="stylesheet" href="${cssPath}/bootstrap-theme.min.css" />
<style type="text/css">
body {
    padding: 60px 0px;
}
</style>
</head>
<body>
    <div class="container">
        <h1>Login Casa do Código</h1>
        <form:form servletRelativeAction="/login" method="POST">
            <div class="form-group">
                <label>E-mail</label> <input type="text" name="username"
                    class="form-control" />
            </div>
            <div class="form-group">
                <label>Senha</label> <input type="password" name="password"
                    class="form-control" />
            </div>
            <button type="submit" class="btn btn-primary">Logar</button>
        </form:form>
    </div>
</body>
</html>
2 respostas
solução!

Meu chute:

@Override
    public boolean isEnabled() {
        // TODO Auto-generated method stub
        return false;
    }

retorne true nesse método aí :). Se isso não resolver, aí meu segundo chute é ver se a query do login não está lançando algum erro.

Era isso mesmo, nossa que vacilo o meu, eu revirei o código e não conseguir enxergar esse erro. Obrigada!!