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
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
¡Gracias, bro!
Gracias!!
gente que le pone el alma
Muy necesario, Gracias!
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)
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.
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.
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
Pienso lo mismo!!
@@kevinrock121295 a, vale, me referia a las practicas de produccion... gracias
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!
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.
Seria perfecto completarlo con React!! y no nos quejaríamos de usar TS ajjaja! que buen video
Te quejas de usar TS? .-.
@@estebangomez3799 Practicamente está diciendo que quiere que sea con TS
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!!!
hola, al final la hizo la segunda parte?
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
Excelente manera de explicar, sumamente claro y fácil de seguir
Tu canal es una gran herramienta para quienes queremos dominar nodejs
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.
Tremendo video. Gracias master, reforce mucho lo que aprendí en otros lados. Tambien de tanto escribir codigo ya ve uno las formas de mejorarlo
I don't understand the language but following closely through code, your videos really helped me. Thanks for the awesome content
Thank you :)
Excelente video Fazt !!! Una vez más.....ha sido de muchisima utilidad. Gracias.🙂🤝
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
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
aver les comparto el link de lo que hice en github
@@merloali dale estaria piola
Nose si lees los comentarios, pero te queria dar las gracias por aportar tanta informacion a la comunidad, enserio* gracias!!! de corazon
Fazt, el nivel de tu canal es muy bueno. Te deseo todo lo mejor para el canal.
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!!!!
Exactamente tengo problemas con JWT. ¡Muchas gracias Fazt! Es invaluable tu aportación al aprendizaje.
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
SIIIIII POR FIN esto lo estaba esperando me gusta el Backend y sobre todo en temas de seguridad y autenticación
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.
Estaría genial consumir esta Rest API de autenticación con Angular! Espero puedas hacer un ejemplo de esta forma. Gracias por compartir conocimiento.
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.
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
Talvez me ayudes con una guía o video de como lo integrarle el bakend al fronted por favor
@@juliocesarquinchiguangomal4826 por supuesto va a ser un placer contactame por mi twitter @osmarpj
@@darwinpalomino141 tal vez tienes facebook para contactarte porfa
@@juliocesarquinchiguangomal4826 no tengo fb
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!
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.
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
Muchas gracias! acabo de terminar el proyecto y la verdad me divertí bastante. Suscripto 😎😎
Gracias fazt, sin vos me aplazaba en la defensa interna xD
Feliz día del programador, Fazt!
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.
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
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!!
Fantástico Fazt muchas gracias es de muy buena utilidad esta práctica tuya
muy buen video estoy aprendiendo a trabajar con las apis y me aclaro muchos conceptos....
muchas gracias por tu video
Gracias a ti por comentar
Muchas gracias, Fazt. Viva Perú!!
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.
Excelente amigo, gracias por compartir el conocimiento. el conocimiento es libre.
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!
Amé este video te agradezco mil! La voy a completar y mejorar todo lo que pueda!! Y luego hacerle el front!!! Mil gracias!!!!!
me estoy haciendo fanatico de fazt!!!
Grande Fazt, sos el mejor de todos!
Fazt, muchas gracias . sencillamente eres un CRACK
Justo lo que necesitaba para un proyecto, muchas gracias fazt, pronto me uniré para colaborar😅
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
Excelente Video, mil gracias aprendí muchísimo!
Gracias de verdad!
Excelente , ayudas a entender la lógica de todos los frameworks ya que vengo de laravel y quiero empezar con node
Fazt la verdad eres mi crush
xD
Genial Crack ! hace poco que te sigo y no he parado!
Que te puedo decir, vocación por compartir conocimiento... Mil gracias por tu dedicación
Bro sos mas grande que el dieguito maradona, gracias de todo corazon mi hermano
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.
2 Horas de excelente contenido.
Querido Fazt, si no es mucha molestia sería lindo el mismo video con Mysql
Tremendo, muchas gracias por compartir tanto!
Simplemente... una genialidad !!!
Muchas gracias x enseñar estos temas 👏🏻👏🏻👏🏻
Fazt eres el mejor
Gracias por cada uno de tus excelentes videos
Muchas gracias por esta clase maestro Fazt
Gracias a ti por el interes :)
Gracias Fazt :)
Maldita sea Fazt, te amo.
Buen tutorial. Saludos Fazt👌
Excelente Fazt. Felicitaciones y muchas gracias
Gracias Fazt, justo lo que queria. :)
Excelente explicación, gracias!.
Todo funciona tal cual lo explicas.
Buenissimo tutorial, muy practico y aprendes mucho!
Excelente explicación. Felicitaciones y gracias por compartir su conocimiento!!!
Muy bueno! excelente para los q estamos retomando o comenzando
Fazt, graciasssssssssssss. Eres el mejor
GRANDe, me ayudo mucho con mi proyecto me salvo. Muchas gracias
Muchas gracias Fazt!!
preciso ya voy a esta parte de mi proyecto!
Que bueno el tutorial, se aprende muy bien!!!
1:17 También se podría enviar un String depende de cada uno cuanto quiera que expire su jwt "1d" "1h" etc..
Ojala que puedas hacer el FRONT CON REACT
Y redux
Seria excelente ver la integración con redux o context, he buscado tutoriales y no he encontrado
@@victorjesusbravodelapena2501 en inglés hay. Pero so
@@rapustin podrías pasarme alguno? No he tenido suerte encontrandolos
@@victorjesusbravodelapena2501 ua-cam.com/video/Di4eAxkPNp0/v-deo.html fíjate por ahí
Que locura! Gracias por compartir este contenido!
Exelente video, estaría muy bien algo similar pero usando flask
Sos un Crack man!.Muy buenos tutos!
Me sirvió mucho su video, muchas gracias!
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.
Me ayudas muchísimo, gracias fazt :)
Terminado, muchas gracias!!
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
Fazt te amo
podrias aclarar comentaste que hay un modulo que hace la conexion de cors con el frontend?
Excelente explicación, gracias!.
Increibleeeee graciaaaaaas enserio eres un maestro
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
Estaría genial usar esa autenticación con react o angular
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"
1:49:25 - protección de rutas basado en role (maria no debería poder borrar producto).
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
Hola me gusto mucho el video se agradece que compartas tu conocimiento. Oyes siento que olvidaste utizar helmet
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
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.
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?
Excelente, video y buen aporte
Muy buen video, me sirvió mucho
Simplemente decir, Genio!!!!
Excelente material! gracias por compartir.
Tengo una pregunta ¿Cuál es el sentido que un usuario tenga mas de un rol?