Nodejs REST API con JWT y Roles (Autorización y Autenticación) & Mongodb

Поділитися
Вставка
  • Опубліковано 7 лют 2025
  • Este es un ejemplo práctico de Nodejs y MongoDB en el que crearemos una REST API que hacer un CRUD de productos, permite autenticar a usuarios y establecer roles para la autorizacion de rutas en el servidor.
    Adicionalmente se usará babel para utilizar las ultimas características de Javascript en Nodejs.
    CÓDIGO DEL EJEMPLO
    github.com/Faz...
    VARIABLES DE ENTORNO NODEJS
    • Variables de Entorno e...
    PM2
    • PM2 | Administrador de...
    MONGOOSE
    • Mongoose | Introduccci...
    CURSO DE MONGODB
    • MongoDB Curso, Introdu...
    CURSO DE NODEJS
    • Nodejs Curso Desde Cer...
    CURSO DE EXPRESS
    • Expressjs | Nodejs Fra...
    CURSO DE JAVASCRIPT
    • Curso Javascript para ...
    CURSO DE GIT
    • Git y Github | Curso P...
    VISUAL STUDIO CODE
    • Visual Studio Code, Ed...
    DENO
    • Deno, Vistazo Rápido
    VISITA MI SITIO WEB PARA MAS CURSOS Y CONTENIDO
    www.faztweb.com
    blog.faztweb.com
    FAZT - UA-cam:
    / fazttech
    TWITTER
    / fazttech
    INSTAGRAM
    / fazttech
    FACEBOOK
    / fazttech
    DISCORD
    / discord
    SLACK
    join.slack.com...
    PARA MÁS CONTENIDO
    faztweb.com/so...
    #rest #api #roles

КОМЕНТАРІ •

  • @jesusvelasco4893
    @jesusvelasco4893 3 роки тому +128

    0:00 - 0:51 : Introducción
    0:51 - 12:00 : Instalación de dependencias
    12:00 - 13:56 : Estructura de archivos del proyecto
    13:56 - 19:47 : Configuración del proyecto
    19:47 - 53:56 : Creación de la api de products (model/routes/controller)
    53:56 - 1:29:00 : Autenticación en la aplicación (creación de roles/sign up)
    1:29:00 - 1:36:22 : Autenticación en la aplicación (sign In)
    1:36:22 - : Autorización de roles en las rutas

  • @LuisLaosChaqui
    @LuisLaosChaqui 5 днів тому

    Excelente video, mes y medio de clases en un solo video, con la mejor explicación... (Es frustrante inscribirte en un curso de programación en un institución prestigiosa en tecnologías y ver como el docente copia y pega código)

  • @sebapinery
    @sebapinery 4 роки тому +29

    No queda mas que decir: GRACIAS. Impresionante el tiempo, dedicacion y paciencia para explicar. Sin dudas el canal numero 1 sobre programacion de habla hispana.

  • @juancamiloparedeszamora8481
    @juancamiloparedeszamora8481 9 місяців тому

    Iba a ver este video para agregar autenticación al backend de mi portafolio, después iba a ver lo de la documentación con Postman, pero resulta que tú la muestras aquí. Eres grande, muchas gracias por tus aportes a la comunidad.

  • @vRiLbaRusH
    @vRiLbaRusH 4 роки тому +68

    Primero gracias por excelente aportación a la comunidad, deberías de hacer un video premium sobre como hacer una api rest pero para producción

  • @aspxsosa
    @aspxsosa 3 роки тому +7

    Otro ejemplo super practico. En mi caso ejecute la idea del curso utilizando postgresql en vez de MongoDB y me funciono super bien. Gracias Fazt! Saludos!

  • @qvacode
    @qvacode 4 роки тому +2

    Fazt estoy esperando un video haciendo uso de una API de criptomonedas, desde inicios de año fue uno de tus temas a tratar y la verdad me interesa mucho. Tus videos son lo mejor, he aprendido mas en 10 meses viendo tus videos que en 5 años en la universidad. Sigue con estos proyectos tan maravillosos que desarrollas. Un saludo desde Cuba.

  • @RafaArraez
    @RafaArraez 4 роки тому +18

    Seria perfecto completarlo con React!! y no nos quejaríamos de usar TS ajjaja! que buen video

    • @estebangomez3799
      @estebangomez3799 4 роки тому

      Te quejas de usar TS? .-.

    • @tarralover7636
      @tarralover7636 4 роки тому +6

      @@estebangomez3799 Practicamente está diciendo que quiere que sea con TS

  • @djbarrueco
    @djbarrueco 4 роки тому +16

    Brutal, solo le falta una segunda parte con React ilustrando su estructura de carpetas recomendada, usando manejadores de estado como populares como Redux (redux-thunk, redux-saga), peticiones HTTP (fetch, axios...) o incluso frameworks de maquetación (material-ui, reactstrap, react-bootstrap...). Solo me queda decir GRACIAS FAZT!!!

    • @flavio5693
      @flavio5693 2 роки тому

      hola, al final la hizo la segunda parte?

  • @rapustin
    @rapustin 4 роки тому +3

    Siempre toca pedir algo más jajajaja. Me está matando la integración con react y las auth xD. Pero ya con todo esto uno puede unir hilos. El tema es que cuando vos lo explicas siempre es más fácil jajajajajajaj. Gracias por tanto fazt

  • @pablocruz1302
    @pablocruz1302 4 роки тому +1

    Excelente manera de explicar, sumamente claro y fácil de seguir
    Tu canal es una gran herramienta para quienes queremos dominar nodejs

  • @PedroLandauro
    @PedroLandauro 3 роки тому +1

    eres un capo, eres masx un crack. Esperamos con ansias la interacción de esta API con React, seria genial aprenderlo si tu lo enseñas. gracias.

  • @10tronic
    @10tronic 11 місяців тому

    Tremendo video. Gracias master, reforce mucho lo que aprendí en otros lados. Tambien de tanto escribir codigo ya ve uno las formas de mejorarlo

  • @pascallussac6917
    @pascallussac6917 3 роки тому

    I don't understand the language but following closely through code, your videos really helped me. Thanks for the awesome content

  • @albertogarcia-ym1gt
    @albertogarcia-ym1gt 3 роки тому +1

    Excelente video Fazt !!! Una vez más.....ha sido de muchisima utilidad. Gracias.🙂🤝

  • @merloali
    @merloali 4 роки тому +1

    wao, fazt, gracias, ya hice con typescript roles dinamicos, y que estos tengan un menu como submenu, todo dinamico, lo que hiciste sera genialmente implementado, gracias

    • @merloali
      @merloali 4 роки тому

      aunq yo no ago que un usuario tenga un arreglo de roles, si no que rol el administrador pueda definirlo inclusive el nombre, por ejemplo: un usuario quiere en su sistema 2 roles que se llamen, SECRETARIAS, CONTADORES, y secres como contadores tienen menus diferentes(esto si lo hice array, con sus subarray submenus para que se despliegeue el menu del admin), y que alla un rol base, del cual el admin ago que de permisos deacuerdo a lo que necesita, por ejemplo, en el tiempo el mismo cliente necesitara otro rol de nombre VENDEDORES, obiamente lo podra crear y cotejar con rol base que menu tendra, y deacuerdo al menu y submenu recien validar con el auth.ts

    • @merloali
      @merloali 4 роки тому

      aver les comparto el link de lo que hice en github

    • @luppo2007
      @luppo2007 4 роки тому

      @@merloali dale estaria piola

  • @hurontermico8677
    @hurontermico8677 3 роки тому

    Nose si lees los comentarios, pero te queria dar las gracias por aportar tanta informacion a la comunidad, enserio* gracias!!! de corazon

  • @mariuszklavezki2886
    @mariuszklavezki2886 4 роки тому

    Fazt, el nivel de tu canal es muy bueno. Te deseo todo lo mejor para el canal.

  • @devapps2211
    @devapps2211 4 роки тому

    Excelente video, habia seguido muchos tutoriales y me funcionaban, pero no entendia nada, con este tutorial ya veo una luz al final del tunel. Gracias totales!!!!

  • @alexandertapiacortez
    @alexandertapiacortez 4 роки тому +1

    Exactamente tengo problemas con JWT. ¡Muchas gracias Fazt! Es invaluable tu aportación al aprendizaje.

  • @AlonsoSalcido
    @AlonsoSalcido 4 роки тому

    Que barbaro siempre que estoy en un aprieto con falta de inspiracion esta un video tuyo para aclarar la mente, muchas gracias por tus aportaciones FAZT :D

  • @eroquedev
    @eroquedev 4 роки тому +2

    SIIIIII POR FIN esto lo estaba esperando me gusta el Backend y sobre todo en temas de seguridad y autenticación

  • @migueldejesus7655
    @migueldejesus7655 4 роки тому

    La parte de Role.estimatedDocumentCount(); me daba errores de limite de tiempo pero es porque abecés duraba un poco en cargar la DB. entonces lo que hice fue que moví el initialsetup para un lado donde para utilizarlo primero debe cargar la db. Gracias por el video esta super bien explicado todo. Espero que pueda ver algún día el consumo de esta api en flutter y en Vue pero mas explicado. Gracias.

  • @delfor.v.
    @delfor.v. 4 роки тому +3

    Estaría genial consumir esta Rest API de autenticación con Angular! Espero puedas hacer un ejemplo de esta forma. Gracias por compartir conocimiento.

    • @qvacode
      @qvacode 4 роки тому

      En videos anteriores el crea un crud completo y hace uso de angular. Puedes verlos aqui: ua-cam.com/video/rPD0eY3dRqQ/v-deo.html
      ua-cam.com/video/l_r9nRJ9YTk/v-deo.html
      Saludos.

  • @darwinpalomino141
    @darwinpalomino141 3 роки тому +1

    Gracias por el aporte, he continuado sobre tu trabajo y he logrado integrarlo con Vue, he hecho algunas modificaciones y sockets corre de maravilla, saludos

  • @johannesgomez3966
    @johannesgomez3966 2 роки тому

    Gracias por compartir tu experiencia y conocimiento. Excelente proyecto y explicación de api rest(backend), para lo que estamos entrando en este apasionante mundo de la programación!

  • @ivand.sanchez9507
    @ivand.sanchez9507 3 роки тому

    Muchas gracias, muy buen contenido. Llevaba tiempo queriendo conocer del manejo de JWT.y roles con NodeJS, mi experiencia se basaba en PHP y otros métodos de autenticación.

  • @robertom.austin1362
    @robertom.austin1362 4 роки тому

    Muchisimas gracias, crack me quede toda la noche y madrugada viendo tu video y ya tengo tu proyecto, pude a verlo clonado pero asi no aprendo xD, saludos

  • @joseloyola2242
    @joseloyola2242 Рік тому

    Muchas gracias! acabo de terminar el proyecto y la verdad me divertí bastante. Suscripto 😎😎

  • @andresbonilla1622
    @andresbonilla1622 3 роки тому +1

    Gracias fazt, sin vos me aplazaba en la defensa interna xD

  • @ecavero1
    @ecavero1 4 роки тому +1

    Feliz día del programador, Fazt!

  • @andresgonzalez-mx9ns
    @andresgonzalez-mx9ns 3 роки тому +2

    Muchas gracias por tu gran aporte, me sirvió bastante, pero hay algo que me estaba fallando y por si a alguien le pasa igual ahí les dejo la info. Cuando se instalen las dependencias de babel también instalen esta @babel/plugin-transform-runtime, esta dependencia evita un error al compilar si escriben código async/await, para que les funcione deben configurar en el archivo babelrc colocando "plugin": [ "@babel/transform-runtime" ], una vez coloquen todo eso ya pueden ejecutar el comando npm run build que nos muestra Fazt Code y cuando ejecuten npm start ya les debería funcionar.

    • @chrominux5272
      @chrominux5272 3 роки тому

      hola, en que parte del archivo se agrega? dentro de los { } del "preset" : [ ]? o en otros { } abajo?, es haciendolo de las 2 maneras me tira error xd

  • @shamanc1to
    @shamanc1to 4 роки тому

    hay un detalle cuando se crea el admin y los roles en una DB vacia, a veces el admin se crea antes que los roles esten cargados quedando el array de roles vacio en el admin. Por lo demas es un excelente ejemplo, gracias!!

  • @eurlyswilsonfrometa2688
    @eurlyswilsonfrometa2688 4 роки тому +2

    Fantástico Fazt muchas gracias es de muy buena utilidad esta práctica tuya

  • @dakardu
    @dakardu 2 роки тому

    muy buen video estoy aprendiendo a trabajar con las apis y me aclaro muchos conceptos....
    muchas gracias por tu video

    • @FaztCode
      @FaztCode  2 роки тому

      Gracias a ti por comentar

  • @david1970qdr
    @david1970qdr 2 роки тому

    Muchas gracias, Fazt. Viva Perú!!

  • @milacho01
    @milacho01 3 роки тому

    Hola, mil gracias por el tutorial tan completo. Qué bárbaro!!!. He encontrado un error de escritura en el proyecto en GitHub (nada relevante) pero en el modelo de usuario está la variable creada como productSchema. // Línea 4: const productSchema = new Schema(. Debería estar como en video userSchema. Gracias.

  • @sergiocastro8616
    @sergiocastro8616 Рік тому

    Excelente amigo, gracias por compartir el conocimiento. el conocimiento es libre.

  • @frankrodriguezlopez8542
    @frankrodriguezlopez8542 4 роки тому +1

    Que buen material 👏👏, voto por completarlo con Angular, por otro lado ¿quienes son capaces de dar pulgar abajo después de un video así? Valla pringaos!

  • @anag2125
    @anag2125 4 роки тому

    Amé este video te agradezco mil! La voy a completar y mejorar todo lo que pueda!! Y luego hacerle el front!!! Mil gracias!!!!!

  • @isroellitvack8048
    @isroellitvack8048 Рік тому

    me estoy haciendo fanatico de fazt!!!

  • @pablorostirolla5859
    @pablorostirolla5859 2 роки тому

    Grande Fazt, sos el mejor de todos!

  • @mtapia197
    @mtapia197 3 роки тому

    Fazt, muchas gracias . sencillamente eres un CRACK

  • @joseramirez4387
    @joseramirez4387 4 роки тому +1

    Justo lo que necesitaba para un proyecto, muchas gracias fazt, pronto me uniré para colaborar😅

  • @mtzrmzia
    @mtzrmzia 4 роки тому +3

    Sé que todos piden usar React en el front pero estaría bien también si usaras Vue, no todo es React. Gracias y excelente video

  • @ydswd2003
    @ydswd2003 3 роки тому +1

    Excelente Video, mil gracias aprendí muchísimo!

    • @ydswd2003
      @ydswd2003 3 роки тому

      Gracias de verdad!

  • @coindrawstore
    @coindrawstore 4 роки тому

    Excelente , ayudas a entender la lógica de todos los frameworks ya que vengo de laravel y quiero empezar con node

  • @oscarcardoso7599
    @oscarcardoso7599 3 роки тому +2

    Fazt la verdad eres mi crush

  • @pieroangulocubas
    @pieroangulocubas 4 роки тому

    Genial Crack ! hace poco que te sigo y no he parado!

  • @julioflores7351
    @julioflores7351 3 роки тому

    Que te puedo decir, vocación por compartir conocimiento... Mil gracias por tu dedicación

  • @josemartinvelizzambrano1356
    @josemartinvelizzambrano1356 4 роки тому

    Bro sos mas grande que el dieguito maradona, gracias de todo corazon mi hermano

  • @jonathanorrego6199
    @jonathanorrego6199 2 роки тому

    Estoy aprendiendo mucho, gracias. Te dejo comentarios: Cuando creas los roles podria ser mejor usar findOne para verificar rol por rol desde una funcion en vez de usar la cuenta pues resulta mas facil mas tarde agregar un rol nuevo pues no lo va a encontrar y lo va a crear.

  • @danielsaavedra1917
    @danielsaavedra1917 3 роки тому

    2 Horas de excelente contenido.

  • @joseluipscortes154
    @joseluipscortes154 4 роки тому +4

    Querido Fazt, si no es mucha molestia sería lindo el mismo video con Mysql

  • @tonoal3005
    @tonoal3005 10 місяців тому

    Tremendo, muchas gracias por compartir tanto!

  • @andresgarciaalves
    @andresgarciaalves 4 роки тому

    Simplemente... una genialidad !!!
    Muchas gracias x enseñar estos temas 👏🏻👏🏻👏🏻

  • @gabrieltrinidad2651
    @gabrieltrinidad2651 4 роки тому +1

    Fazt eres el mejor

  • @josemanuelherrero6495
    @josemanuelherrero6495 4 роки тому +1

    Gracias por cada uno de tus excelentes videos

  • @mexicandevelopers6469
    @mexicandevelopers6469 3 роки тому

    Muchas gracias por esta clase maestro Fazt

    • @FaztCode
      @FaztCode  3 роки тому +1

      Gracias a ti por el interes :)

  • @gamershere4531
    @gamershere4531 3 роки тому +1

    Gracias Fazt :)

  • @PieroRolando
    @PieroRolando 4 роки тому

    Maldita sea Fazt, te amo.

  • @heribertoortiz2099
    @heribertoortiz2099 4 роки тому +3

    Buen tutorial. Saludos Fazt👌

  • @grbsql
    @grbsql 4 роки тому

    Excelente Fazt. Felicitaciones y muchas gracias

  • @davidhch9833
    @davidhch9833 4 роки тому +1

    Gracias Fazt, justo lo que queria. :)

  • @jhonimanuelsanchezsuarez3117
    @jhonimanuelsanchezsuarez3117 2 роки тому

    Excelente explicación, gracias!.
    Todo funciona tal cual lo explicas.

  • @tovape
    @tovape 2 роки тому

    Buenissimo tutorial, muy practico y aprendes mucho!

  • @jamesdavid6258
    @jamesdavid6258 3 роки тому

    Excelente explicación. Felicitaciones y gracias por compartir su conocimiento!!!

  • @jotaxd_
    @jotaxd_ 4 роки тому

    Muy bueno! excelente para los q estamos retomando o comenzando

  • @prime_time_youtube
    @prime_time_youtube 2 роки тому

    Fazt, graciasssssssssssss. Eres el mejor

  • @saileklaj
    @saileklaj 2 роки тому

    GRANDe, me ayudo mucho con mi proyecto me salvo. Muchas gracias

  • @gustavodavila8110
    @gustavodavila8110 3 роки тому +1

    Muchas gracias Fazt!!

  • @yeraldev
    @yeraldev 4 роки тому +1

    preciso ya voy a esta parte de mi proyecto!

  • @avel40mendez99
    @avel40mendez99 2 роки тому

    Que bueno el tutorial, se aprende muy bien!!!

  • @RevampWorkshop
    @RevampWorkshop 3 роки тому

    1:17 También se podría enviar un String depende de cada uno cuanto quiera que expire su jwt "1d" "1h" etc..

  • @brianbg941
    @brianbg941 4 роки тому +51

    Ojala que puedas hacer el FRONT CON REACT

    • @rapustin
      @rapustin 4 роки тому +5

      Y redux

    • @victorjesusbravodelapena2501
      @victorjesusbravodelapena2501 4 роки тому +3

      Seria excelente ver la integración con redux o context, he buscado tutoriales y no he encontrado

    • @rapustin
      @rapustin 4 роки тому +1

      @@victorjesusbravodelapena2501 en inglés hay. Pero so

    • @victorjesusbravodelapena2501
      @victorjesusbravodelapena2501 4 роки тому

      @@rapustin podrías pasarme alguno? No he tenido suerte encontrandolos

    • @rapustin
      @rapustin 4 роки тому +1

      @@victorjesusbravodelapena2501 ua-cam.com/video/Di4eAxkPNp0/v-deo.html fíjate por ahí

  • @josetuz
    @josetuz 4 роки тому

    Que locura! Gracias por compartir este contenido!

  • @ceroserio8810
    @ceroserio8810 4 роки тому +3

    Exelente video, estaría muy bien algo similar pero usando flask

  • @nicolasmaximilianoledesma8295
    @nicolasmaximilianoledesma8295 4 роки тому

    Sos un Crack man!.Muy buenos tutos!

  • @Santi4246
    @Santi4246 2 роки тому

    Me sirvió mucho su video, muchas gracias!

  • @tologar
    @tologar 3 роки тому

    Un saludo y gracias por tu tiempo.
    Todavía no he acabado el tutorial, pero el código de github no coincide con el código de User,js del video 1:11:17
    productSchema userSchema
    Lo dicho, muchas gracias por tus conocimientos.

  • @danilomereles6671
    @danilomereles6671 3 роки тому

    Me ayudas muchísimo, gracias fazt :)

  •  Рік тому

    Terminado, muchas gracias!!

  • @felipepino834
    @felipepino834 Рік тому

    Hola amigo fazt muchas gracias por todo esto ya la tengo lista está api , ahora sería mucho pedir si la implementaras en react con los token y todo ,por favor , ahora 2023

  • @emmanuelareiza9699
    @emmanuelareiza9699 Рік тому

    Fazt te amo

  • @bismarkaldana9189
    @bismarkaldana9189 3 місяці тому

    podrias aclarar comentaste que hay un modulo que hace la conexion de cors con el frontend?

  • @DanielCodContent
    @DanielCodContent 2 роки тому

    Excelente explicación, gracias!.

  • @estebangomez3799
    @estebangomez3799 4 роки тому

    Increibleeeee graciaaaaaas enserio eres un maestro

  • @devapps2211
    @devapps2211 4 роки тому

    Dejo esta pregunta suelta que quizas me puedas despejar, al principio se instalaron los paquetes dotenv, helmet y cors, al final del tutorial no se pusieron en funcionamiento (o quizas me los salte y ni cuenta me di jejeje ) y no me quedaron muy claros su utilidad, de resto todo entendido y listo para implementar lo aprendido con React. Gracias por compartir conocimiento

  • @lindltaylor4093
    @lindltaylor4093 4 роки тому +3

    Estaría genial usar esa autenticación con react o angular

  • @jonathanorrego6199
    @jonathanorrego6199 2 роки тому +1

    Otro comentario.... Porque no se usa import directo sin babel? yo lo uso sin babel y me funciona bien, solamente hay que agregar una linea en el package.json "type": "module", y luego el script de arranque para npm : "dev": "nodemon -experimental-modules src/index.js"

  • @fernandonogueira2291
    @fernandonogueira2291 Рік тому

    1:49:25 - protección de rutas basado en role (maria no debería poder borrar producto).

  • @waldirozuna8886
    @waldirozuna8886 4 роки тому +4

    Muy buen video he visto que haces el consumo en vue react, pero me gustaría ver como consumes un api así pero flutter o xmarin eso estaría, muy interesante

  • @DeXtRoXiToHeRo
    @DeXtRoXiToHeRo 4 роки тому

    Hola me gusto mucho el video se agradece que compartas tu conocimiento. Oyes siento que olvidaste utizar helmet

  • @neyjunoir
    @neyjunoir 2 роки тому

    buenas fazt podrías hacer un video nuevo igual que este con subida de imágenes para un perfil de usuario porfa tío eres un crack mi hermano

  • @tiposamuel
    @tiposamuel Рік тому

    Hola Fazt, estaria bueno renovar este video esta vez sobre Postres, puede ser con Sequelize o Prisma. Hay pocos videos sobre roles en UA-cam.

  • @gamershere4531
    @gamershere4531 3 роки тому +2

    Fazt, tengo una pregunta! Acerca del token.
    Localmente pasamos ese token a cada peticion donde la necesitemos! para proteger rutas etc, pero que pasa en el lado del cliente final? es decir, cuando ya tenga listo un front, esto como se maneja?, tienes alguna guia para leer acerca de ello?

  • @makitoap
    @makitoap 4 роки тому

    Excelente, video y buen aporte

  • @zaphkiel_3371
    @zaphkiel_3371 3 роки тому

    Muy buen video, me sirvió mucho

  • @axelbulfon4071
    @axelbulfon4071 4 роки тому

    Simplemente decir, Genio!!!!

  • @juanmamani2110
    @juanmamani2110 Рік тому

    Excelente material! gracias por compartir.
    Tengo una pregunta ¿Cuál es el sentido que un usuario tenga mas de un rol?