1 - A tabela Usuario e Usuario_Role e o seus relacionamento tem que ser criado diretamente no BD? 2 - Se sim qual o curso que trata deste tópico?
1 - A tabela Usuario e Usuario_Role e o seus relacionamento tem que ser criado diretamente no BD? 2 - Se sim qual o curso que trata deste tópico?
Oi Vinicius,
Não precisa não pois utilizamos a JPA com o Hibernate que gera automaticamente as tabelas no BD.
Abraço!
Bom dia!
Joviane, concordo com você porém mesmo desenvolvendo passo a passo, não foi criada essas duas tabelas no BD. Tive que fazer manualmente. Agora ela loga, porem dá o erro 403 de acesso negado.
Estranho ele não criar automaticamente, como está a sua configuração de hibernate.hbm2ddl.auto
? Esta informação está dentro da classe que você configurou a JPA.
O erro de 403 deve ser por conta de permissão do seu usuário. Posta aqui como está a sua configuração do Spring Security e como está a Role do usuário que você quer logar na tabela do BD.
Abraço!
1 - props.setProperty("hibernate.hbm2ddl.auto", "update");
2 -
@EnableWebMvcSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{
@Autowired
private UsuarioDAO UsuarioDAO;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/produtos/form").hasRole("ADMIN")
.antMatchers(HttpMethod.POST, "/produtos").hasRole("ADMIN")
.antMatchers(HttpMethod.GET, "/produtos").hasRole("ADMIN")
.antMatchers("/produtos/**").permitAll()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and().formLogin();
}
3 - @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;
}
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(UsuarioDAO)
.passwordEncoder(new BCryptPasswordEncoder());
}
}
É Vinicius,
Deveria ter atualizado mesmo a sua tabela no banco já que está como update
na propriedade hibernate.hbm2ddl.auto
.
O usuário que você quer logar está com o campo nome
da tabela Role
como ROLE_ADMIN
? O Spring Security concatena ROLE_
antes do nome da Role que você passa no método hasRole
. Se não estiver assim, é só alterar direto na tabela que deve funcionar.
Abraço!
Acho que as minhas tabelas estão com problema.
1 - Criei as seguintes tabelas manualmente no BD
Tabela Role
Tabela Usuario email nome
Tabela Usuario Rede Usuario_email roles_nome