Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que hicimos: Autenticación API

@Entity
@Table(name = "usuarios")
public class Usuario implements UserDetails {

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

private String login;
private String contrasena;

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return List.of(new SimpleGrantedAuthority("ROLE_USER"));
}

@Override
public String getPassword() {
    return contrasena;
}

@Override
public String getUsername() {
    return 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;
}

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

public void setContrasena(String contrasena) {
    this.contrasena = contrasena;
}

}
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
UserDetails findByLogin(String login);
}
@Service
public class AutenticacionService implements UserDetailsService {

@Autowired
private UsuarioRepository repository;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    return repository.findByLogin(username);
}

}
@Configuration
@EnableWebSecurity
public class SecurityConfigurations {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http
            .csrf(csrf -> csrf.disable())
            .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
            .build();
}

@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration configuration) throws Exception {
    return configuration.getAuthenticationManager();
}

@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

}
@RestController
@RequestMapping("/login")
public class AutenticacionController {

@Autowired
private AuthenticationManager manager;

@PostMapping
public ResponseEntity<?> iniciarSesion(@RequestBody @Valid DatosAutenticacion datos) {
    var token = new UsernamePasswordAuthenticationToken(datos.login(), datos.contrasena());
    manager.authenticate(token);
    return ResponseEntity.ok().build();
}

}
public record DatosAutenticacion(String login, String contrasena) {
}
@Service
public class CrearUsuarioService {

@Autowired
private UsuarioRepository repository;

@Autowired
private PasswordEncoder passwordEncoder;

public void crearUsuario() {
    Usuario usuario = new Usuario();
    usuario.setLogin("jeimy.flores@voll.med");
    usuario.setContrasena(passwordEncoder.encode("123456"));
    repository.save(usuario);
}

}