Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rubén Ramírez
/
MangAffinity
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
84451dc5
authored
Feb 20, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [JWT]: Implementada la encriptación de la clave
parent
6f45a714
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
92 additions
and
0 deletions
pom.xml
src/main/java/com/ujaen/tfg/mangaffinity/config/SecurityConfig.java
src/main/java/com/ujaen/tfg/mangaffinity/entidades/Usuario.java
src/main/java/com/ujaen/tfg/mangaffinity/seguridad/JwtUtil.java
src/main/java/com/ujaen/tfg/mangaffinity/servicios/ServicioUsuarios.java
pom.xml
View file @
84451dc5
...
...
@@ -68,6 +68,34 @@
<version>
2.2.224
</version>
<scope>
test
</scope>
</dependency>
<!-- Para encriptar contraseñas con BCrypt -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-security
</artifactId>
</dependency>
<!-- Para manejar JSON Web Tokens (JWT) -->
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt-api
</artifactId>
<version>
0.11.5
</version>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt-impl
</artifactId>
<version>
0.11.5
</version>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt-jackson
</artifactId>
<version>
0.11.5
</version>
<scope>
runtime
</scope>
</dependency>
</dependencies>
<build>
...
...
src/main/java/com/ujaen/tfg/mangaffinity/config/SecurityConfig.java
0 → 100644
View file @
84451dc5
package
com
.
ujaen
.
tfg
.
mangaffinity
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
@Configuration
public
class
SecurityConfig
{
@Bean
public
PasswordEncoder
passwordEncoder
()
{
return
new
BCryptPasswordEncoder
();
}
}
\ No newline at end of file
src/main/java/com/ujaen/tfg/mangaffinity/entidades/Usuario.java
View file @
84451dc5
...
...
@@ -26,6 +26,7 @@ public class Usuario {
@Column
(
unique
=
true
,
nullable
=
false
)
private
String
nombreUsuario
;
@Setter
@NotBlank
@Column
(
nullable
=
false
)
private
String
contrasenia
;
...
...
src/main/java/com/ujaen/tfg/mangaffinity/seguridad/JwtUtil.java
0 → 100644
View file @
84451dc5
package
com
.
ujaen
.
tfg
.
mangaffinity
.
seguridad
;
import
io.jsonwebtoken.Claims
;
import
io.jsonwebtoken.Jwts
;
import
io.jsonwebtoken.SignatureAlgorithm
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
@Component
public
class
JwtUtil
{
private
final
String
SECRET_KEY
=
"clave_secreta"
;
// Cámbiala por algo más seguro
public
String
generarToken
(
String
email
)
{
return
Jwts
.
builder
()
.
setSubject
(
email
)
.
setIssuedAt
(
new
Date
())
.
setExpiration
(
new
Date
(
System
.
currentTimeMillis
()
+
1000
*
60
*
60
*
10
))
// 10 horas
.
signWith
(
SignatureAlgorithm
.
HS256
,
SECRET_KEY
)
.
compact
();
}
public
String
extraerEmail
(
String
token
)
{
return
getClaims
(
token
).
getSubject
();
}
public
boolean
validarToken
(
String
token
,
String
email
)
{
return
(
email
.
equals
(
extraerEmail
(
token
))
&&
!
estaExpirado
(
token
));
}
private
boolean
estaExpirado
(
String
token
)
{
return
getClaims
(
token
).
getExpiration
().
before
(
new
Date
());
}
private
Claims
getClaims
(
String
token
)
{
return
Jwts
.
parser
()
.
setSigningKey
(
SECRET_KEY
)
.
parseClaimsJws
(
token
)
.
getBody
();
}
}
src/main/java/com/ujaen/tfg/mangaffinity/servicios/ServicioUsuarios.java
View file @
84451dc5
...
...
@@ -5,17 +5,22 @@ import com.ujaen.tfg.mangaffinity.repositorios.RepositorioUsuario;
import
jakarta.validation.Valid
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
@Service
public
class
ServicioUsuarios
{
@Autowired
RepositorioUsuario
repositorioUsuario
;
private
final
PasswordEncoder
passwordEncoder
=
new
BCryptPasswordEncoder
();
/**
* Función para crear un Socio en la estructura
* @param usuario usuario que se va a añadir
*/
public
void
crearUsuario
(
@Valid
Usuario
usuario
)
{
usuario
.
setContrasenia
(
passwordEncoder
.
encode
(
usuario
.
getContrasenia
()));
repositorioUsuario
.
guardar
(
usuario
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment