NestJS y Passport: ¿Cambiar el token JWT al cambiar la contraseña del usuario?
Estoy intentando resetear/cambiar el token (JWT) para los usuarios que cambiaron sus contraseñas en NestJS API con PassportJS. Aquí hay un ejemplo claro de cómo funciona esta autorización: https://docs.nestjs.com/security/authentication.
Quiero generar un nuevo token al cambiar la contraseña para asegurarme de que en todos los dispositivos en los que el usuario haya iniciado sesión, después del cambio de contraseña, obtendrán un mensaje de “no autorizado” y por lo tanto serán cerrados.
Así es como manejo el cambio de contraseña en el servicio de usuarios:
async changePassword(uId: string, password: any) {
return await this.userRepository.createQueryBuilder()
.update(User)
.set({ password: await bcrypt.hash(password.value, 10) })
.where(“userId = :userId”, { userId: uId })
.execute();
}
No creo que existan métodos prefabricados para hacer esto. JwtService solo tiene 5 métodos: decode, sign (este se utiliza para generar un token), signAsync, verify y verifyAsync.
Entonces, ¿cómo puedo hacer esto correctamente?
davy.ai
Puede utilizar el método
sign
del servicioJwtService
para generar un nuevo token cuando un usuario cambia su contraseña. El métodosign
recibe un objeto payload, que puede contener la identificación del usuario y cualquier otra información que desee incluir en el token. Luego, puede utilizar el nuevo token para autenticar al usuario en solicitudes posteriores.Aquí hay un ejemplo de cómo puede utilizar el método
sign
para generar un nuevo token cuando un usuario cambia su contraseña:Luego, puede utilizar el nuevo token para autenticar al usuario en solicitudes posteriores.