Muchas gracias por estos videos, las explicaciones son muy amenas y no tienes la necesidad de correr, te tomas tu tiempo para explicar las cosas paso a paso y eso es algo que se agradece un montón! Vamos, que hasta una presentación nos preparas jajaja 🙌🏼
me estoy viendo todos tus videos sobre esto de NodeJS y la verdad no se como este canal de estas maravillosas personas que comparten esta información y explican MUCHO mejor que cursos y hasta profesores de escuelas virtuales no tienen tanto apoyo... Yo en el backend empecé hace un par de tiempo viendo videos de fazt y quería comprarme la carrera de Coder House, unos días antes de comprarla estuve investigando y diciendo que no lo recomendaban tanto al 100% ya que no explicaban lo suficientemente profundo por lo que cuestan dichos cursos y recomendaban ver videos (también ver algunos bootcamps, pero todavía no pude encontrar alguno que me llame la atención), investigué y vi tu canal, no me arrepiento para nada de no haber pagado para inscribirme y comprar esa carrera. :) Espero que sigan creciendo, tienen mi apoyo y el de muchas personas más... Pronto este canal será una gran comunidad ❤❤
Muchas gracias!! 😊 La verdad que poco a poco vamos recibiendo cada vez más apoyo, nos alegra saber que lo que hacemos sirve para formar mejor a la gente y de una forma diferente.
Vine a copiar el codigo de un comentario que decia que session tambien usaba secretos y no lo encontre. Por fa no borres, lo que tendrias que haber hecho es fijarlo para que la gente aprenda bien en vez de borrarlo. Un saludo!
Si es verdad, es posible usar secretos en las sesiones. Lo podes googlear, por eso es importante no estudiar solamente de videos de youtube, pero si ayudan muchisimo
Buenas, no he borrado ningún comentario, podrías decirme si el comentario era nuestro? Si no es así es posible que la persona lo borrara. Creo que sólo hemos borrado 1 comentario una vez de alguien que insultaba 😅
gracias por estos videos, las explicaciones son muy buenas ,porfavor puede conectar toda esta api con una platilla en nodejs con ( handlebars) o otras plantillas predetermonadas en nodejs para poder aprender mucho mas mejor
Te felicito por el video! Consulta suponiendo que hago la autenticacion con JWT y tengo un carrito de compras, lo que va seleccionando el usuario para co.prar, igualmente lo debo guardar en una sesión cierto? Más allá de que cin JWT envié el token cada vez que acceda a una página para ver sibesta logrado. Muchas gracias
Hola! Primero que todo muchas gracias por los cursos, me ha resultado dentro de todo sencillo con sus explicaciones, son excelentes profesores, quería hacer una consulta respecto al session, por lo que entendí una vez se vuelva a logear un usuario esta sessionId debiese ser eliminado desde el almacenamiento que se esté utilizando verdad? Entonces debería validar si hay un sessionId en el almacenamiento vinculado al idUser y eliminarlo antes de generar uno nuevo o estoy equivocado? Muchas gracias por todo el contenido y por su respuesta de antemano, saludos! 🤓
A nosotros igual Ryan, de hecho casi siempre usamos tokens porque el tema sesiones no nos ha hecho mucha falta. En el siguiente video veremos el caso con token, en particular con jwt.
Eso es otro tema más complicado... Puedes hacerlo en cookies, en localStorage o en sessionStorage, dependiendo del caso. Habrá vídeo de eso, dalo por hecho!
@@DesarrolloUtil :'00, muchas graciasss!, Es que estoy haciendo una app para mis residencias profesionales, y por el momento lo guardo en localStorage pero no se que tan seguro puede ser a futuro jajaja
Dos detalles rápidos Jose. Primero: Existen webs que una vez te logueas, digamos que vas arrastrando tu id en la url, allá donde vayas. ¿Lo que "arrastramos" es una session ID? En caso afirmativo, bajo tu opinión ¿es seguro hacerlo así o hay mejores formas de hacerlo?(que rabia pero ahora mismo no encuentro ningún ejemplo claro para ejemplarizarte lo que digo) Segundo: Y está relacionado con el primero, como programadores web, ¿tenemos que hacer la misma comprobación que tu haces para /profile, para cada uno de los endpoints de nuestra web o eso sólo se comprueba una vez y nos olvidamos mientras esa sesseionID esté activa? Gran vídeo Jose, la mezcla entre seguridad y programación web, personalmente me gusta mucho. Muchas gracias :) PD: ¿Prefieres que te las pase por discord? Como a ti te venga mejor. Saludos
Hola Jose, una pregunta: si la sesión dura por ejemplo 1 hora, mientras un cliente sigue conectado e interactuando con la aplicación, cada endpoint después de verificar la sesión y hacer lo que tenga que hacer, ¿simplemente vuleve a enviar la sessionId cookie al navegador para volverle a dar 1 hora? ¡Gracias!
He estado siguiendo todos los videos del curso, pero me encuentro con la situación de que no recuerdo que se haya mostrado la parte de "../helpers/auth-by-email.pwd.js"...¿En qué video anterior se crea ese archivo?
Respecto a la validación mas insegura que comentas de las sesiones, no se podría hacer algo similar a un token? Codificar dicho ID con un secret? Mil gracias por vuestro contenido, es genial!
Buenas Adria, la cookie que contiene el id de la sesión se puede encriptar y sería algo recomendable para mejorar la seguridad y evitar ese punto. Lo introduzco en la tabla porque habitualmente esto es algo opcional, se puede solucionar de esa forma y evitar esa validación más insegura. Con el token digamos que ya lo tenemos de serie 😉
Buenas, al crear la cuenta no tiene sentido aun porque no se inició la sesión, si consideramos que cuando creas cuenta puedes iniciar sesión todo en uno podría tener sentido. Aunque normalmente eso no lo hacemos porque al crear cuenta se suele necesitar activación previa via email para poder iniciar sesión
estoy desarrollando un Api, y es extraño cuando hago las pruebas en insomnia y postman si me aparece la cookie que envie desde el servidor pero cuando lo hago desde la interfaz de login ya en el navegador no me aparece ninguna cookie, ¿ alguna idea de por qué pasa eso ? y muy buen vídeo gracias por la información.
si el usuario entra directamente en el navegador a una ruta que devuelve una vista, las cookies se enviaran automáticamente para poder autentificar si tiene sesion? o como se podria protejer una vista que solo pueden entrar los que han iniciado session?
Para crear y autenticar un logueo se puede hacer solo con express-session o si o si con cookie parser tambien? En mi proyecto no necesito recordar datos del usuario cuando cierra el navegador. Solo necesito validar que usuario es para poder darle los accesos a las rutas de administrador mientras navega en la app.
La autenticación se puede hacer de mil y una formas. No me atrevería a decir que haya una mejor que otra. La cuestión es: - Entiende lo que tienes que hacer - Busca una herramienta que te permita hacerlo - Manos a la obra 💪
Buenas Diego, entiendo que te refieres a tener sesiones pero que cada usuario sólo pueda tener una a la vez. Si es así, lo único que debes hacer cuando crees una sesión es comprobar si ya existe una para ese usuario, si existe podrías eliminar la antigua y mantener la nueva. De esa forma te aseguras de sólo tener 1 por usuario
Bro pero en la Session si se puede guardar información además del id, de hecho dijiste tu mismo que cuando tienes un carrito se puede guardar información del carrito, ósea de puede guardar lo que quieras. 🤷🏾 además las sesiones expiran quiere decir que siempre que te logueas tienes una nueva sesión, en cambio el token es el mismo.
Tengo entendido que session tambien usaba secretos para generar el sid. En la configuracion de la sesion de una session coockie tambien se puede establecer un secreto. Dejo un ejemplo de la configuracion de una sesion con expiracion de 7 dias: const sessionConfig = { secret: 'palabrasecreta', // Este es el secreto que tambien el tipo token resave: false, saveUninitialized: true, cookie: { sameSite: 'lax', httpOnly: true, expires: Date.now() + 1000 * 60 * 60 *24 * 7, maxAge: 1000 * 60 * 60 *24 * 7 } }
Cierto, eso es un mecanismo extra de seguridad para que no se pueda modificar el valor de la cookie una vez establecido. Lo tenemos pendiente para un futuro video de prácticas de seguridad, muchas gracias por el comentario 😀
Muchas gracias por estos videos, las explicaciones son muy amenas y no tienes la necesidad de correr, te tomas tu tiempo para explicar las cosas paso a paso y eso es algo que se agradece un montón! Vamos, que hasta una presentación nos preparas jajaja 🙌🏼
Por aquí somos de pensar que las cosas bien hechas llevan su tiempo. Muchas gracias!
Gracias por tu paciencia y la forma que enseñas saludos desde Bolivia🙌🙌
Saludos desde Cuba. Magnifico trabajo. No te canses nunca.
Qué genios!, gracias por tanto. Saludos desde Argentina
Esa interfaz esta buena, se puede apreciar mucho mejor el codigo al ser la letra mas grande, y se pueden ver mejor los cambios
Excelente explicación estimado José. Gracias por el aporte amigo.
Y llego el dìa de la verdad... jijijiji.. Muy buena su aclaratoria.. Saludos desde Venezuela (26/10/2022)
Pensé que sería complicado las cookies, pero con la explicación resulto muy fácil de entender. Gracias por el vídeo Jose!!!
No es para tanto, la verdad, aunque queda mucho por explicar!
Muchas gracias por estas explicaciones. Aprendemos con vosotros. 💟💯👋
Muchísimas gracias por el vídeo ☺️☺️
A ti Gema!
Garcías José. Como siempre muy buen vídeo❤️❤️❤️
A vosotros por el apoyo 🤗
Muchas gracias Jose! Excelente contenido 🚀 ! Saludos desde Argentina
Muchas gracias y saludos para Argentina!
vaya maquina que eres! en mi curso estamos haciendo un proyecto como trabajo final y tus videos son joyas, muchas gracias por el valor que aportas!
Gracias a ti!
me estoy viendo todos tus videos sobre esto de NodeJS y la verdad no se como este canal de estas maravillosas personas que comparten esta información y explican MUCHO mejor que cursos y hasta profesores de escuelas virtuales no tienen tanto apoyo... Yo en el backend empecé hace un par de tiempo viendo videos de fazt y quería comprarme la carrera de Coder House, unos días antes de comprarla estuve investigando y diciendo que no lo recomendaban tanto al 100% ya que no explicaban lo suficientemente profundo por lo que cuestan dichos cursos y recomendaban ver videos (también ver algunos bootcamps, pero todavía no pude encontrar alguno que me llame la atención), investigué y vi tu canal, no me arrepiento para nada de no haber pagado para inscribirme y comprar esa carrera. :)
Espero que sigan creciendo, tienen mi apoyo y el de muchas personas más... Pronto este canal será una gran comunidad ❤❤
Muchas gracias!! 😊
La verdad que poco a poco vamos recibiendo cada vez más apoyo, nos alegra saber que lo que hacemos sirve para formar mejor a la gente y de una forma diferente.
Excelente José. Chapo
Muchas gracias!
Vine a copiar el codigo de un comentario que decia que session tambien usaba secretos y no lo encontre. Por fa no borres, lo que tendrias que haber hecho es fijarlo para que la gente aprenda bien en vez de borrarlo. Un saludo!
Si es verdad, es posible usar secretos en las sesiones. Lo podes googlear, por eso es importante no estudiar solamente de videos de youtube, pero si ayudan muchisimo
Buenas, no he borrado ningún comentario, podrías decirme si el comentario era nuestro? Si no es así es posible que la persona lo borrara.
Creo que sólo hemos borrado 1 comentario una vez de alguien que insultaba 😅
los mejores videos 👍
Gracias!
Videazo!
Muy buen video!!
Excelente un gran video 👌
Muchas gracias!
gracias por estos videos, las explicaciones son muy buenas ,porfavor puede conectar toda esta api con una platilla en nodejs con ( handlebars) o otras plantillas predetermonadas en nodejs para poder aprender mucho mas mejor
Muchas gracias! En principio el curso será orientado más al back, luego completaremos con React, creando proyectos enteros!
Muy buen video Jose!
Gracias Josue!
Estaría muy bien el mismo video de practicas pero con jwt
Este mismo domingo subimos ese video!
Te felicito por el video! Consulta suponiendo que hago la autenticacion con JWT y tengo un carrito de compras, lo que va seleccionando el usuario para co.prar, igualmente lo debo guardar en una sesión cierto? Más allá de que cin JWT envié el token cada vez que acceda a una página para ver sibesta logrado.
Muchas gracias
Hola! Primero que todo muchas gracias por los cursos, me ha resultado dentro de todo sencillo con sus explicaciones, son excelentes profesores, quería hacer una consulta respecto al session, por lo que entendí una vez se vuelva a logear un usuario esta sessionId debiese ser eliminado desde el almacenamiento que se esté utilizando verdad? Entonces debería validar si hay un sessionId en el almacenamiento vinculado al idUser y eliminarlo antes de generar uno nuevo o estoy equivocado? Muchas gracias por todo el contenido y por su respuesta de antemano, saludos! 🤓
A mi personalmente me gusta a través de tokens
A nosotros igual Ryan, de hecho casi siempre usamos tokens porque el tema sesiones no nos ha hecho mucha falta.
En el siguiente video veremos el caso con token, en particular con jwt.
@@DesarrolloUtil genial, espero ese video, un saludo profe.
@@DesarrolloUtil y donde guardan ese token? :0
Eso es otro tema más complicado... Puedes hacerlo en cookies, en localStorage o en sessionStorage, dependiendo del caso.
Habrá vídeo de eso, dalo por hecho!
@@DesarrolloUtil :'00, muchas graciasss!, Es que estoy haciendo una app para mis residencias profesionales, y por el momento lo guardo en localStorage pero no se que tan seguro puede ser a futuro jajaja
Disculpen, ¿qué tema de VSC está usando?
Dos detalles rápidos Jose.
Primero: Existen webs que una vez te logueas, digamos que vas arrastrando tu id en la url, allá donde vayas. ¿Lo que "arrastramos" es una session ID? En caso afirmativo, bajo tu opinión ¿es seguro hacerlo así o hay mejores formas de hacerlo?(que rabia pero ahora mismo no encuentro ningún ejemplo claro para ejemplarizarte lo que digo)
Segundo: Y está relacionado con el primero, como programadores web, ¿tenemos que hacer la misma comprobación que tu haces para /profile, para cada uno de los endpoints de nuestra web o eso sólo se comprueba una vez y nos olvidamos mientras esa sesseionID esté activa?
Gran vídeo Jose, la mezcla entre seguridad y programación web, personalmente me gusta mucho. Muchas gracias :)
PD: ¿Prefieres que te las pase por discord? Como a ti te venga mejor. Saludos
Yo creo que para estos temas, mejor por Discord!
Hola Jose, una pregunta: si la sesión dura por ejemplo 1 hora, mientras un cliente sigue conectado e interactuando con la aplicación, cada endpoint después de verificar la sesión y hacer lo que tenga que hacer, ¿simplemente vuleve a enviar la sessionId cookie al navegador para volverle a dar 1 hora?
¡Gracias!
He estado siguiendo todos los videos del curso, pero me encuentro con la situación de que no recuerdo que se haya mostrado la parte de "../helpers/auth-by-email.pwd.js"...¿En qué video anterior se crea ese archivo?
Respecto a la validación mas insegura que comentas de las sesiones, no se podría hacer algo similar a un token? Codificar dicho ID con un secret? Mil gracias por vuestro contenido, es genial!
Buenas Adria, la cookie que contiene el id de la sesión se puede encriptar y sería algo recomendable para mejorar la seguridad y evitar ese punto.
Lo introduzco en la tabla porque habitualmente esto es algo opcional, se puede solucionar de esa forma y evitar esa validación más insegura.
Con el token digamos que ya lo tenemos de serie 😉
se puede crear el sessionId cuando haces el endpoint para crear una cuenta nueva o no tiene sentido? Buen vídeo!!!
Buenas, al crear la cuenta no tiene sentido aun porque no se inició la sesión, si consideramos que cuando creas cuenta puedes iniciar sesión todo en uno podría tener sentido. Aunque normalmente eso no lo hacemos porque al crear cuenta se suele necesitar activación previa via email para poder iniciar sesión
@@DesarrolloUtil Perfecto muchas gracias por vuestro contenido!!!😄
Una consulta más cuando el usuario cierra sesión o se va del navegador se puede revokar el token?
estoy desarrollando un Api, y es extraño cuando hago las pruebas en insomnia y postman si me aparece la cookie que envie desde el servidor pero cuando lo hago desde la interfaz de login ya en el navegador no me aparece ninguna cookie, ¿ alguna idea de por qué pasa eso ? y muy buen vídeo gracias por la información.
si el usuario entra directamente en el navegador a una ruta que devuelve una vista, las cookies se enviaran automáticamente para poder autentificar si tiene sesion? o como se podria protejer una vista que solo pueden entrar los que han iniciado session?
podemos usar ambas a la vez? token y sesion
Para crear y autenticar un logueo se puede hacer solo con express-session o si o si con cookie parser tambien? En mi proyecto no necesito recordar datos del usuario cuando cierra el navegador. Solo necesito validar que usuario es para poder darle los accesos a las rutas de administrador mientras navega en la app.
La autenticación se puede hacer de mil y una formas. No me atrevería a decir que haya una mejor que otra.
La cuestión es:
- Entiende lo que tienes que hacer
- Busca una herramienta que te permita hacerlo
- Manos a la obra 💪
El poder acceder a los datos del token mediante consola me genera dudas, digo...
la información del payload siempre tiene que quedar tan expuesta ?
Una pregunta que quizás sea muy de novato, como podría manejar una sesión por usuario, sin múltiples sesiones simultáneas? esto es parte del backend?
Buenas Diego, entiendo que te refieres a tener sesiones pero que cada usuario sólo pueda tener una a la vez.
Si es así, lo único que debes hacer cuando crees una sesión es comprobar si ya existe una para ese usuario, si existe podrías eliminar la antigua y mantener la nueva.
De esa forma te aseguras de sólo tener 1 por usuario
Bro pero en la Session si se puede guardar información además del id, de hecho dijiste tu mismo que cuando tienes un carrito se puede guardar información del carrito, ósea de puede guardar lo que quieras. 🤷🏾 además las sesiones expiran quiere decir que siempre que te logueas tienes una nueva sesión, en cambio el token es el mismo.
como actualizar una sesion cuando expira sin tener que volver a hacer login
el auth session/login no me funciono entonces me baje el repo y tampoco funciono el repo , que paso?
Pues por esas indicaciones que me das diría que... Ni idea 😅
Tengo entendido que session tambien usaba secretos para generar el sid. En la configuracion de la sesion de una session coockie tambien se puede establecer un secreto. Dejo un ejemplo de la configuracion de una sesion con expiracion de 7 dias:
const sessionConfig = {
secret: 'palabrasecreta', // Este es el secreto que tambien el tipo token
resave: false,
saveUninitialized: true,
cookie: {
sameSite: 'lax',
httpOnly: true,
expires: Date.now() + 1000 * 60 * 60 *24 * 7,
maxAge: 1000 * 60 * 60 *24 * 7
}
}
Cierto, eso es un mecanismo extra de seguridad para que no se pueda modificar el valor de la cookie una vez establecido.
Lo tenemos pendiente para un futuro video de prácticas de seguridad, muchas gracias por el comentario 😀