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>