Nodejs REST API con JWT y Roles (Autorización y Autenticación) & Mongodb
ฝัง
- เผยแพร่เมื่อ 19 ก.ย. 2024
- 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 - TH-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!
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.
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
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
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!
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?
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.
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.
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
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
Querido Fazt, si no es mucha molestia sería lindo el mismo video con Mysql
I don't understand the language but following closely through code, your videos really helped me. Thanks for the awesome content
Thank you :)
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.
Excelente video Fazt !!! Una vez más.....ha sido de muchisima utilidad. Gracias.🙂🤝
SIIIIII POR FIN esto lo estaba esperando me gusta el Backend y sobre todo en temas de seguridad y autenticación
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
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
Tremendo video. Gracias master, reforce mucho lo que aprendí en otros lados. Tambien de tanto escribir codigo ya ve uno las formas de mejorarlo
Exactamente tengo problemas con JWT. ¡Muchas gracias Fazt! Es invaluable tu aportación al aprendizaje.
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: th-cam.com/video/rPD0eY3dRqQ/w-d-xo.html
th-cam.com/video/l_r9nRJ9YTk/w-d-xo.html
Saludos.
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!!!!
Fantástico Fazt muchas gracias es de muy buena utilidad esta práctica tuya
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!!
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 th-cam.com/video/Di4eAxkPNp0/w-d-xo.html fíjate por ahí
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.
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
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!
me estoy haciendo fanatico de fazt!!!
Fazt, el nivel de tu canal es muy bueno. Te deseo todo lo mejor para el canal.
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
Excelente Video, mil gracias aprendí muchísimo!
Gracias de verdad!
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.
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"
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.
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.
HOLA iré apuntando las cosas que hoy no funcionan o no a mi por lo menos :P
1-primero en .babelcr agregar "module:"
{
"presets":[
"module:@babeL/preset-env"
]
}
2- si dice babel-node no se reconoce como funcion interna o externa bla bla bla
"scripts": {
"serve": "babel-node src/index.js",
"start": "nodemon --exec npm run serve"
}
Solo eso tuve que cambiar al final jaja Exclente tutorial.. Muchas gracias Fazt :D
Muchas gracias! acabo de terminar el proyecto y la verdad me divertí bastante. Suscripto 😎😎
Tremendo, muchas gracias por compartir tanto!
Nose si lees los comentarios, pero te queria dar las gracias por aportar tanta informacion a la comunidad, enserio* gracias!!! de corazon
Feliz día del programador, Fazt!
Amé este video te agradezco mil! La voy a completar y mejorar todo lo que pueda!! Y luego hacerle el front!!! Mil gracias!!!!!
Justo lo que necesitaba para un proyecto, muchas gracias fazt, pronto me uniré para colaborar😅
Excelente , ayudas a entender la lógica de todos los frameworks ya que vengo de laravel y quiero empezar con node
Excelente amigo, gracias por compartir el conocimiento. el conocimiento es libre.
Gracias fazt, sin vos me aplazaba en la defensa interna xD
Muchas gracias, Fazt. Viva Perú!!
Gracias Fazt :)
Simplemente... una genialidad !!!
Muchas gracias x enseñar estos temas 👏🏻👏🏻👏🏻
Fazt, muchas gracias . sencillamente eres un CRACK
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
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!
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
Que te puedo decir, vocación por compartir conocimiento... Mil gracias por tu dedicación
Gracias por cada uno de tus excelentes videos
Genial Crack ! hace poco que te sigo y no he parado!
1:17 También se podría enviar un String depende de cada uno cuanto quiera que expire su jwt "1d" "1h" etc..
Estaría genial usar esa autenticación con react o angular
Uno de auth con Facebook, Google GitHub etc. Usando jwt por favor.
Podrías usar passport, o hacerlo sin el, de todos modos no es necesario usar jwt, ya que el mismo proveedor de autenticación por ejemplo facebook te da un token
Para auténticacion con FB, Google, etc puedes utilizar Auth0, te provee todo este mecanismo para administrar e implementar la autorización. Adicional también cuenta con la posibilidad de integrar auténticacion de dos factores.
@@shairdev Una pregunta, ¿si usas Passport te podes ahorrar utilizar JWT o tenes que utilizar ambas?
@@trespunt0catorce sabes de un vídeo o un repo donde pueda guiarme ? Me interesan hacerlo con Google y Facebook
Excelente explicación. Felicitaciones y gracias por compartir su conocimiento!!!
Exelente video, estaría muy bien algo similar pero usando flask
Excelente explicación, gracias!.
Todo funciona tal cual lo explicas.
Buen tutorial. Saludos Fazt👌
Grande Fazt, sos el mejor de todos!
Fazt, graciasssssssssssss. Eres el mejor
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.
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
Muchas gracias por esta clase maestro Fazt
Gracias a ti por el interes :)
Excelente Fazt. Felicitaciones y muchas gracias
Muy bueno! excelente para los q estamos retomando o comenzando
Gracias Fazt, justo lo que queria. :)
Buenissimo tutorial, muy practico y aprendes mucho!
Fazt la verdad eres mi crush
xD
GRANDe, me ayudo mucho con mi proyecto me salvo. Muchas gracias
Bro sos mas grande que el dieguito maradona, gracias de todo corazon mi hermano
Buenisimo y completico. Una pregunta, es esguro usar solo jsonwebtoken para la seguridad por token o se necesita hacer otras validaciones? osea si expiro el token ... y esas cosas. Sludos Fazt
Fazt eres el mejor
Que bueno el tutorial, se aprende muy bien!!!
2 Horas de excelente contenido.
Terminado, muchas gracias!!
Sos un Crack man!.Muy buenos tutos!
Que locura! Gracias por compartir este contenido!
Muchas gracias Fazt!!
Me ayudas muchísimo, gracias fazt :)
Hola Fazt, estaria bueno renovar este video esta vez sobre Postres, puede ser con Sequelize o Prisma. Hay pocos videos sobre roles en TH-cam.
Me sirvió mucho su video, muchas gracias!
preciso ya voy a esta parte de mi proyecto!
Excelente aporte!! Pregunta, me gustó el tema de VSCode, cuál es? Saludos!!
Yo tambien lo quiero! acomoda bien lindas las carpetas etc
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 explicación, gracias!.
¿Por qué ya no dices:"Heyy coders, bienvenidos a otro video" ?
xd
Veo que lo haces todo sin parar, te acuerdas todo eso de memoria o es la magia de la edición? 😆
Es practica solamente, escribo código similar muy seguido
Maestro pasa el theme de VS Code. Gracias por compartir tu conocimiento.
Si también que iconos que utilizas en tu vs code
Los iconos son de material icon theme y el tema se llama dobri next
1:49:25 - protección de rutas basado en role (maria no debería poder borrar producto).
Al final no se usaron Helmet, Cors, dotenv. Cuentanos un poco para que las ibas a usar tocayo!
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
Hola me gusto mucho el video se agradece que compartas tu conocimiento. Oyes siento que olvidaste utizar helmet
Maldita sea Fazt, te amo.
Lo que haces con mongoses, lo de crear modelos y solo enviarlos sin crear una base de datos ni tablas, puedo hacerlo con mysql?
such a mind-blowing work