JSON Web Tokens, Introducción Práctica con Nodejs, Mongodb y async/await

Поделиться
HTML-код
  • Опубликовано: 23 сен 2019
  • Este video es un ejemplo practico de Json Web tokens usando nodejs, Mongodb,y otroas tecnologías de Javascript. Adicionalmente usaremos bibliotecas como bcrypt y async/await.
    CÓDIGO DEL CURSO
    github.com/FaztWeb/node-simpl...
    Typescript REST API
    • Typescript, Nodejs & M...
    Async & Await
    • Javascript Async Await...
    CURSO DE NODEJS
    • Nodejs Curso Desde Cer...
    CURSO DE MONGODB
    • MongoDB Curso, Introdu...
    TYPESCRIPT EJEMPLOS
    • Typescript REST API co...
    CURSO DE GIT
    • Git y Github | Curso P...
    VISUAL STUDIO CODE
    • Visual Studio Code, Ed...
    VISITA MI SITIO WEB PARA MAS CURSOS Y CONTENIDO
    www.faztweb.com
    blog.faztweb.com
    FAZT - RUclips:
    / fazttech
    TWITTER
    / fazttech
    INSTAGRAM
    / fazttech
    FACEBOOK
    / fazttech
    #jwt #nodejs #mongodb
  • НаукаНаука

Комментарии • 114

  • @Cesar-ws9gv
    @Cesar-ws9gv 4 года назад

    Excelente tutorial clarisimo y suficientemente breve para comprender con simplicidad, muchisimas gracias Fazt, me quedare esperando un ejemplo mas avanzado y más segura.

  • @mikshem1056
    @mikshem1056 4 года назад +8

    Excelente, mis inicios con JWT, espero con ansias el vídeo 57:13 para uso en producción.

  • @renzomr17
    @renzomr17 4 года назад +25

    Me pondré a ver el video MI DIOS

  • @romarioyabar4430
    @romarioyabar4430 4 года назад +2

    Crack! Repasar los conocimientos de JWT siempre es buenooo.

  • @agustinlipchak1480
    @agustinlipchak1480 4 года назад

    Me encanto sin duda me fue muy útil ya que pase un buen tiempo buscando entender para poder aplicar jwt con nodejs-express en sesiones, excelente vídeo!!! Como siempre un grande Fazt.

  • @jumarq1
    @jumarq1 4 года назад +1

    Fazt eres un genio, muy didáctico, y eficiente gracias totales.

  • @ivanhernandezcoral2338
    @ivanhernandezcoral2338 3 года назад

    Mi hermano mil gracias por transmitir tu conocimiento, tus videos son muy muy buenos, excelente explicación

  • @rachidoulgour4973
    @rachidoulgour4973 4 года назад

    Eres el Rey, gracias por tus videos a ver si sales en alguno para que te conozcamos.

  • @juliomontilla100
    @juliomontilla100 4 года назад

    Un capo como siempre.. Mas sencillo explicado no se puede... Esperando ya el uso de passport con node! Saludos crack

  • @agustinlavalla8892
    @agustinlavalla8892 4 года назад

    Excelente explicación, como siempre! Muchas gracias!

  • @fracielarevalo7401
    @fracielarevalo7401 4 года назад +2

    felicitasiones amigo muy entretenidos amigo no tiene desperdicios sus videos

  • @arquip
    @arquip 2 года назад

    Videos que valen oro!!

  • @danielsuarez6648
    @danielsuarez6648 3 года назад

    El mejor explicando, eres un duro ! Sigue asii :D

  • @alexpineda1720
    @alexpineda1720 4 года назад

    Gracias Fazt, muy buen cotenido como siempre

  • @issaccastro6506
    @issaccastro6506 4 года назад

    Te amo ♥️
    Justo esto está a investigando hace unas semanas XD

  • @jeancarlosortiz3518
    @jeancarlosortiz3518 3 года назад

    Despues de un año vengo a agradecer, me sirvió resto tu ejemplo

  • @ronnymt1624
    @ronnymt1624 3 года назад

    Muy bien explicado, gracias Faz Code

  • @jesusmoralesfernandez3123
    @jesusmoralesfernandez3123 4 года назад +2

    Hace como un año que encontré tu canal, siendo sincero no le presté mucha atención porqué el desarrollo web no me interesaba demasiado, estoy estudiando ingienería en sistemas y estaba mucho más enfocado a escritorio, poco a poco ví tus vídeos y cada vez me encantaba más el desarrollo web.
    Hace unos meses tuve que abandonar mi ingienería, pero gracias a tí y tus vídeos, hoy fué mi primer día como Desarrollador Node en una gran empresa y me haz abierto la posibilidad de continuar mis estudios.
    Gracias, eres un verdadero crack y algún día espero poder a ser tan bueno como tú!

  •  4 года назад

    Justo lo que queria async / await buen ejemplo

  • @Daniel-gd1xo
    @Daniel-gd1xo 4 года назад

    Hola Fazt, primero felicidades por tus canales, siempre aprendo algo nuevo con tus videos, incluso si es un tema que conozco. Seria interesante complementar el tema con un refresh token o posiblemente para un siguiente video con passport! gracias!

  • @grbsql
    @grbsql 3 года назад

    Excelente Fazt. Muchas gracias

  • @carlosaracena789
    @carlosaracena789 4 года назад +11

    Ufff buen video, puedes hacer un vídeo de un signup y un login con jwt y El mean stack luego? Muchas gracias!!

  • @lindltaylor4093
    @lindltaylor4093 4 года назад

    gracias fazt lo espere hace meses :D

  • @Gio-nk9pf
    @Gio-nk9pf 4 года назад +3

    Waoww eres lo maximo!!!

  • @armandotelmocajilemacuji3350
    @armandotelmocajilemacuji3350 4 года назад

    muy buen vídeo, felicitaciones ayudas un full a desarrolladores que estamos empezando 7w7

  • @OsvGames
    @OsvGames 4 года назад +2

    Tus fans necesitamos ver mas videos de NodeJS con handlebars, hay muchas lagunas en handlebars, me gustaría aclarar unas cuantas dudas con usted.

    • @giovannygarzonsoto
      @giovannygarzonsoto 4 года назад

      te demoras 10 minutos en leer la documentacion aslkdj

  • @nevertastesogood
    @nevertastesogood 3 года назад

    Genial video 💜

  • @FernandoLopez-vc2ld
    @FernandoLopez-vc2ld 4 года назад

    muy bueno, muchas gracias, y a la espera de passport

  • @maikelberbi5210
    @maikelberbi5210 Год назад

    Excelente video bro

  • @oliveira1820
    @oliveira1820 4 месяца назад

    Muchas gracias por tus contenidos.

    • @FaztCode
      @FaztCode  4 месяца назад

      Gracias a ti por el apoyo :)

  • @fernandomontesnavarrete8826
    @fernandomontesnavarrete8826 3 года назад

    Gracias, profe.

  • @kenethsandoval2641
    @kenethsandoval2641 4 года назад

    excelente vídeo, eres un crack

  • @marcosMartinez-wm7bd
    @marcosMartinez-wm7bd 3 года назад

    EXCELENTE!!

  • @angelhidalgo4747
    @angelhidalgo4747 4 года назад

    Excelente aporte, eres un genio hermano. Ojala puedas abordar a fondo el tema de Angular Routing. Estoy desarrollando una app con menu lateral colapsable y este es tratado como un componente en el router, pero cada una de las llamadas al menu son childs!! Es algo a lo que no había llegado.

  • @luisdavidrivero1776
    @luisdavidrivero1776 4 года назад

    Genial video, ¿Para cuando una segunda parte desde un front con angular o react?

  • @irvingdelgado6426
    @irvingdelgado6426 4 года назад

    Muy buen tuto! Gracias

  • @JoseDanielPossoGarcia
    @JoseDanielPossoGarcia 4 года назад

    ERES EL MEJOR, GRACIAS!

  • @edersorto7346
    @edersorto7346 3 года назад

    mucho mejor explicado que en el curso de jwt de platzi :D

  • @eriksamuel2945
    @eriksamuel2945 3 года назад

    Eres un crack ❤️

  • @jucelinofilho9404
    @jucelinofilho9404 4 года назад +3

    Havia visto muitos exemplos com o Bearer, onde o token era colocado no "Autorization", e depois era necessário fazer um split() para separados e valida-lo. Poderia explicar a diferença entre o Bearer e esse método que você usou?
    Abraços do Brasil!

  • @LG-wb1jf
    @LG-wb1jf 3 года назад

    me encanta el tema de halt and catch fire

  • @sergiovalp
    @sergiovalp 3 года назад

    Excelente, justo lo que necesitamos los programadores, preciso y conciso. Sólo le habría agregado la casuística de que si el token es modificado intencionalmente (modificando un caracter por ejemplo, o usando un token expirado), atrapar ese error y manejarlo, ya que en ese caso el verify arroja una excepción. ¿Lo habrías manejado con un try catch o de otra forma?

  • @Mantequilla723
    @Mantequilla723 4 года назад

    excelente video. entendi muchas cosas que no habia entendido antes. Ya subiste el ejemplo de produccion? Me interesa saber como se arma un back de produccion real. Gracias.

  • @eiderarango5863
    @eiderarango5863 4 года назад +10

    Hey man. Thank you so much. I really appreciate all the effort that you put into these videos. You have such a great channel, keep it up.
    I want to ask you for something, could you do a video about authentication and authorization using GraphQl, NodeJs and JWT? See ya.

  • @PierPaoloZini
    @PierPaoloZini 4 года назад +1

    ¡Buenisimo video! Siempre más útil lo que propones!
    Pero... tengo unas "dudas" sobre el "mundo backend"...
    1) Los "Providers" (por lo menos lo más famosos...) siguen ofreciendo hosting que ofrece solo PHP y no te permite de utilizar Node.js; algunos te ofrecen "servidores virtuales", bastante caros, para que se pueda utilizar node. Sabes si algo está cambiando o la tendencia sigue siendo la misma de siempre?
    2) Cuanto puede ser "rentable" en en final de 2019 ( sobre todo a nivel de tiempo y de "servicios" reales que puede ofrecer...) crear un backend en PHP? Y que se puede utilizar (es decir, con o sin framework, ect...)?
    3) Hablamos de webserver. Si quiero crear un webserver "en casa" para ofrecer servicios de Node ("en casa" sería en una servidor interno de una empresa...), cual distro sería mejor, cual servidor (Apache, Nginx, ...) y como se podrían configurar los puertos para que funcione el backend?
    Gracias!

  • @estebanoctaviopavezllanca2385
    @estebanoctaviopavezllanca2385 3 года назад +1

    Gracias

  •  4 года назад

    Hola fazt me encanta tu video era algo que esperaba mucho, mira una pregunta tu página web usas algún framework o cms o como cargas el contenido dinámico o lo haces de forma manual me gustaría saber eso, yo he realizado webs esraticas pero no me gustaría usar wordpress. Muchas gracias

  • @ferdysduran9173
    @ferdysduran9173 4 года назад

    Buenas, buen video, podrias hacer uno sobre refresh token

  • @maximilianominetto524
    @maximilianominetto524 4 года назад

    Buenas cuando pensabas hacer un video con passport.js y algunas prácticas de seguridad? puede ser que passport esté obsoleto, porque eso vi por ahi.
    Gracias

  • @letslearnabout4934
    @letslearnabout4934 4 года назад

    Gracias por este video, Fazt.
    Por cierto, Insomnia o Postman?

  • @martinbrisset
    @martinbrisset 4 года назад +1

    ¿Cómo puedo crear un modelo y pasarle como variable el nombre de la colección?

  • @dagovindany
    @dagovindany 3 года назад

    Hola, de antemano gracias, gracias a vos , ya tengo mi api listo para subir a producción, estoy en la parte del jwt siguiendo el video bien, pero al momento de colocar el mildware en la ruta me genera un error: Route.post() requires a callback function but got a [object Object] y allí quedo, me podrías guiar por favor

  • @rogercolque
    @rogercolque 4 года назад +1

    Hola como es el manejo de rutas si requiero un token pero q expire la sesion.
    Por ejemplo las apps moviles de bancos, cada cierto tiempo se expira la session y te pregunta si quieres permanecer _conectado la sesión_ .
    Esa parte como se manejaria en la parte de nodejs.
    Gracias.
    pd: Vi unos ejemplos que envian 2 tokens
    *1ero token* : el verdadero (con expiracion )
    *2do token* : otro para refrescar el token( esto con expiracion pues nose).

  • @diegocamilopenaramirez6101
    @diegocamilopenaramirez6101 4 года назад

    Muchas gracias

  • @gmayas
    @gmayas 4 года назад

    Excelente

  • @SergioPosse
    @SergioPosse 4 года назад

    Me queda la duda de como seria en produccion, se usa de la misma forma jwt? soy totalmente inexperto en deploy y quisiera aprender! gracias fazt!

  • @juancamiloq1
    @juancamiloq1 4 года назад

    Fazt me gustaría que hicieras un boilerplate y usarlo para que puedas hacer apps mas completas

  • @surflaweb
    @surflaweb 4 года назад

    gracias wey.. hubiera valido la pena hacer esto con React.. pudiera sera para ser un segundo video voy a haber si lo ago yo

  • @yesidev4131
    @yesidev4131 4 года назад

    Fazt te quiero agradecer porque con los ejemplos que has creado en nodejs, eh aprendido más que un curso de nodejs, enserio me pase a ver un curso en udemy que me regalaron y primero me aburrí y segundo casi todo el curso me la pase saltando porque decia: "ah ok fazt uso esto y aquello" o "nah prefiero la forma qeu mostró fazt"... que libros recomiendas? aprendiste con ellos?

  • @christianm888
    @christianm888 4 года назад

    Te amo.

  • @silentsnake27
    @silentsnake27 4 года назад

    Hola fazt tengo un problema al ya poner en práctica en un proyecto de prueba los tokens y es que el token lo logro generar y también verificar, pero a la hora de usar la web desde el navegador el token no de almacena en el cliente y entonces no me deja acceder a las rutas protrgidas. Que crees que lo ocasione ?

  • @cdrman
    @cdrman 4 года назад +1

    Estaría muy bien si ahora explicaras como consumir esta API desde una web, sin utilizar Vue, Angular o ReacJs. Un saludo.

    • @eduardokanp
      @eduardokanp 4 года назад

      Busca como manejar rutas desde expréss

  • @angeltoo8786
    @angeltoo8786 10 месяцев назад

    funciona igual para emplearlo en sql?

  • @nosoyalberto9340
    @nosoyalberto9340 3 года назад

    Voto por el ejemplo de producción me interesa analizar cómo solucionas la verificación de correo y recuperación de contraseña, pd. hazme un hijo.

  • @estebanbeltran5970
    @estebanbeltran5970 3 года назад

    Que sucede cuando el token ya expiró? Cómo se maneja en el cliente??

  • @gustavoghp2262
    @gustavoghp2262 4 года назад

    Alguien sabe cómo hacer que el token se incorpore a los headers de los usuarios? Porque en el ejercicio se hace copiando y pegando en insomnia...

  • @josejrreyes1567
    @josejrreyes1567 4 года назад

    necesito ayuda en el servidor web no me convalida el token

  • @anthonymlop
    @anthonymlop 11 месяцев назад

    al realizar pruebas con email o contraseñas incorrectos, en insomia te muestra el texto asignado ' email invalido' o 'contraseña invalida' pero cuando lo pruebo me muestra Unauthorized, por que?

  • @ipkickss
    @ipkickss 3 года назад

    Y como puedo mandar los tokens a traves del header sin usar Insomnia?

  • @misterjj96
    @misterjj96 4 года назад +10

    y cuando expira el token que pasa, como refrescar el token ? fuera sido genial si fueses agregado eso al video

    • @juliorangel2798
      @juliorangel2798 4 года назад

      @zasara XD Como hago para que cada vez que ingrese al sistema, me remueva el token anterior?

    • @MsSoldadoRaso
      @MsSoldadoRaso 3 года назад

      cuando expira el token pues es como decir que el token no es valido, entonces no tienes autorización

  • @NonsenseIsOver
    @NonsenseIsOver 4 года назад

    ¿Qué es más seguro, JsonWebToken o Passport?

  • @poldiaz
    @poldiaz Год назад

    me sale este error por consola
    TypeError: app.use() requires a middleware function
    y este es el codigo que tengo en la app.js
    const express = require("express");
    const app = express();
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(require("./controllers/authController"))
    module.exports = app;
    cuando comento la linea donde esta el authController el error desaparece pero no puedo hacer nada mas

  • @Jmontero1804
    @Jmontero1804 4 года назад

    Excelente tutorial, lo vi todo, muchas gracias....una pregunta, Fazt, consideras que JWT es mejor que Passport? Gracias.

    • @Biocrista
      @Biocrista 4 года назад

      creo que son distintos, bueno no se, en el video donde hizo la api con mongo db inicio de sesion y eso, uso passport, y hasta donde entendi se usaba para encriptar contraseñas. el token es para autenticar una sesion y mantenerla abierta o cerrarla, ademas de añadir seguridad, evitar hackeos supongo. ahorita ando viendo esta serie de videos porque necesito crear un login, yo soy front end pero quiero entender todo el proceso desde el back, y por lo que he visto voy a requerir tanto la encryptacion como el token (en un proyecto anterior en el que trabaje se usaban tokens y las contraseñas estaban encryptadas)

  • @erickmolina1190
    @erickmolina1190 3 года назад

    funciona con mysql?

  • @edsonme9
    @edsonme9 4 года назад

    Me gustaría ver un ejemplo de producción como lo mencionaste al final del video, aún soy estudiante y me interesó mucho esto de los jwt, saludos crack!

  • @OlivosRugby
    @OlivosRugby 4 года назад +1

    Hola Fazt, excelente video!! Como siempre!. Una consulta cuando envío un post con un cliente me da el error: (node:15648) UnhandledPromiseRejectionWarning: ReferenceError: User is not defined
    at ......FaztCode\json-web-token\src\controllers\authController.js:16:18 . Puede ser que Express no maneje excepciones y deba meterle un try catch?. Muchas gracias!!

    • @brandovidaldeza6840
      @brandovidaldeza6840 4 года назад +1

      bueno primero puedes comprobar que se este importando correctamente el modelo y los demás requerimientos, y tambien que cuando uses el metodo del esquema llames a la instancia creada, por ejemplo:
      const user = new User({username, email,password});
      user.password = user.encryptPassword(user.password);
      Espero te sea de ayuda (>->).

  • @euforia_
    @euforia_ 4 года назад

    Apenas vi este video fui a ver cuanto duraba y vi que era casinuna hora entonces me dije es un curso completo de node con una extensión para aterrizar el mars en Marte ajajajjajajaj mamita que velocidad de codeo 🤣

  • @martincarp4671
    @martincarp4671 3 года назад

    Refused to load the font 'localhost:5000/icon/iconfont.woff?t=1571728594832' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.
    no me explico que le pasa

  • @zeroes5237
    @zeroes5237 3 года назад

    bro, lo siento, no entendí la parte, por que solo cifraste el user._id?

  • @williamalfredo2594
    @williamalfredo2594 3 года назад

    Like y me suscribo

  • @lopuma1990
    @lopuma1990 2 года назад

    Hola Fazt, como puedo crear ese id, se hace en MySQL o en JavaScript??

    • @FaztCode
      @FaztCode  2 года назад

      Hola Lopuma, si te refieres al Id que va almacenado en el token, este lo puedes obtener cuando añades un nuevo usuario en tu base de datos de MySQL. Es decir ese id viene de MySQL en tu caso

  • @duvaraclaudio2727
    @duvaraclaudio2727 Год назад

    No se me genera el header 'authorization' ni 'x-access-token' ni nada, no puedo avanzar

  • @mclaren541
    @mclaren541 4 года назад +1

    estaria genial un panel de administrador para administrar la aplicacion completa que usa los usuarios normales en el frontend, con tener la tabla de usuarios bastaria para tener un ejemplo.
    aprovecho para preguntar , no es viable crear toda la interfaz desde cero, alguien conoce algo o de donde puedo tomar componentes como el sidebar y eso, para ponerlos en mi app en react?
    ya sea usando reactstrap o react-bootstrap. conoces alguna @fazt ?

    • @gelintonx
      @gelintonx 4 года назад

      Para eso esta Django

  • @PraexorVS
    @PraexorVS 4 года назад +1

    ¿Para que tener un token si ya el usuario tienen un password, aclaerenme eso por favor? gracias de antemano

    • @Biocrista
      @Biocrista 4 года назад +1

      creo que esto es para añadir seguridad a las sesiones, tampoco lo twngo del todo claro pero he trabajado en proyectos ya en ejecución y se usaba tanto la encryptacion de contraseñas como los tokens

    • @irvingdelgado6426
      @irvingdelgado6426 4 года назад

      para mantener una "sesión" activa, cada petición del cliente debe incluir su token, de otra manera el servidor no sabe si el cliente está autenticado o no. Otra alternativa a los tokens es usar sesiones con Cookies.

  • @yormanlopez8553
    @yormanlopez8553 3 года назад

    22:00

  • @kenethsandoval2641
    @kenethsandoval2641 4 года назад

    Y aprovechando, alguien podría ayudarme, es que tengo una API con ts y pues al ver este vídeo mi inspire y decidí ponerle un login. El problema que tengo es que el bcryptjs,no puedo poner el userSchema.methods.encryptPassword en el archivo de user.js, me dice el encryptPassword no es un tipo document, espero puedan ayudarme.
    Y Fazt asombrosos vídeos, de nuevo, me fascinan

  • @galo7486
    @galo7486 2 года назад

    41:03

  • @jesusmercado1283
    @jesusmercado1283 4 года назад

    No entiendo, cual es la diferencia con el otro canal? iluminenme.

  • @pringstom
    @pringstom 4 года назад

    😂

  • @Naxx99
    @Naxx99 3 года назад

    PUEDES CREARME UN BOT JWT PARA LA PLATAFORMA AIRTM.COM QUE ME AYUDE A TOMAR OPERACIONES DE FONDEOS Y RETIROS MAS RAPIDOS QUE MIS COMPAÑEROS PAGO 200$ POR EL BOT

  • @carlosramirez4961
    @carlosramirez4961 Год назад

    Qué tal, agradezco su ayuda en el siguiente error que me muestra al momento de ingresar a la ruta "/me" desde insomnia, le envío el token que me genera, pero me da este error
    node_modules\express\lib
    esponse.js:1150
    : JSON.stringify(value);
    "TypeError: Converting circular structure to JSON"
    Cuando le quito el token y hago la petición GET a la aplicación, sí me muestra el error que no tiene token, el código es el siguiente:
    ***** Archivo VerifyToken.js *****
    const jwt = require('jsonwebtoken');
    const config = require('../config');
    function verifyToken (req, res, next) {
    const token = await req.headers['x-access-token'];
    if(!token){
    return res.status(401).json({
    auth: false,
    message: 'No token provided'
    });
    }
    const decoded = jwt.verify(token, config.secret);
    next();
    }
    module.exports = verifyToken;
    ***** Ruta /me *****
    router.get('/me', verifyToken, async (req, res, next) => {
    const user = User.findById(req.userId, {password: 0});
    if(!user){
    return res.status(404).send('No user found');
    }

    res.send(user);
    });
    Agradezo su ayuda, llevo varias horas tratando de solucionar el error, pero aún no lo logro, saludos!