Inserts:
insert into user_role (username, role, granted_date)
values ('admin','ADMIN',NOW());
insert into user_role (username, role, granted_date)
values ('customer','CUSTOMER',NOW());
Introducción
Seguridad en aplicaciones web
¿Qué es Spring Security?
Configurar Spring Security
Usar la autenticación por defecto
Configuración de seguridad
Crear configuración inicial de seguridad
¿Cómo funciona el BasicAuthenticationFilter?
Deshabilitar protección CSRF
Crear configuración de CORS
Aplicar requestMatchers
Crear autenticación en memoria
Aplicar requestMatchers con roles
Autenticación con BD
Crear usuarios en la base de datos
Implementar la interface UserDetailsService
Asignar roles a usuario
Aplicar authorities a los usuarios
Controlar métodos con Method Security
Seguridad con JWT
Añadir JWT al proyecto
Crear JWT cuando un usuario inicie sesión
Crear servicio para validar un JWT
Crear filtro para verificar el JWT
Aplicar filtro en la configuración
Próximos pasos
Auditoria de usuarios en la base de datos
¿Quieres un Curso de Microservicios con Java Spring?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Alejandro RamÃrez
Aportes 8
Preguntas 3
Inserts:
insert into user_role (username, role, granted_date)
values ('admin','ADMIN',NOW());
insert into user_role (username, role, granted_date)
values ('customer','CUSTOMER',NOW());
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Objects;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UserRoleId implements Serializable {
private String username;
private String role;
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof UserRoleId that)) return false;
return Objects.equals(username, that.username) && Objects.equals(role, that.role);
}
@Override
public int hashCode() {
return Objects.hash(username, role);
}
}
package com.platzi.pizza.persistence.entity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
@Entity
@Table(name = "user_role")
@IdClass(UserRoleId.class)
@Getter
@Setter
@NoArgsConstructor
public class UserRoleEntity {
@Id
@Column(nullable = false, length = 20)
private String username;
@Id
@Column(nullable = false, length = 20)
private String role;
@Column(name = "granted_date", nullable = false, columnDefinition = "DATETIME")
private LocalDateTime grantedDate;
@ManyToOne
@JoinColumn(name = "username", referencedColumnName = "username", insertable = false, updatable = false)
private UserEntity user;
}
✅
package com.platzi.pizza.persistence.entity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
@Entity
@Table(name = "user")
@Getter
@Setter
@NoArgsConstructor
public class UserEntity {
@Id
@Column(nullable = false, length = 20)
private String username;
@Column(nullable = false, length = 200)
private String password;
@Column(length = 50)
private String email;
@Column(nullable = false, columnDefinition = "TINYINT")
private Boolean locked;
@Column(nullable = false, columnDefinition = "TINYINT")
private Boolean disabled;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
private List<UserRoleEntity> roles;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?