Spring Security
Spring Security
☑️ Principais recursos
✅ Proteção de endpoints HTTP
✅ Controle de acesso baseado em roles (perfis)
✅ Login com formulário ou HTTP Basic
✅ Integração com banco de dados para autenticação
✅ Criptografia de senhas
✅ Filtro de requisições (filter chain)
sql
CopiarEditar
Using generated security password: 5b29cf92-5e...
java
CopiarEditar
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws
Exception {
return http
.authorizeHttpRequests(auth -> auth
.anyRequest().authenticated()
)
.formLogin(withDefaults())
.build();
}
@Bean
public UserDetailsService users() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("admin")
.password("1234")
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user);
}
}
🔐 Autenticação com banco de dados (Spring
Security + Spring Data JPA)
// getters e setters
}
2. Repositório
java
CopiarEditar
public interface UsuarioRepository extends JpaRepository<Usuario,
Long> {
Optional<Usuario> findByUsername(String username);
}
@Autowired
private UsuarioRepository usuarioRepo;
@Override
public UserDetails loadUserByUsername(String username) throws
UsernameNotFoundException {
Usuario usuario = usuarioRepo.findByUsername(username)
.orElseThrow(() -> new
UsernameNotFoundException("Usuário não encontrado"));
return User.builder()
.username(usuario.getUsername())
.password(usuario.getPassword())
.roles(usuario.getRole())
.build();
}
}
4. Codificação de senhas
java
CopiarEditar
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
java
CopiarEditar
usuario.setPassword(passwordEncoder.encode("123456"));