Registro y Login funcional en Javascript con node y express - guía paso a paso

Sdílet
Vložit
  • čas přidán 12. 07. 2024
  • Vamos a crear un sitio web con un formulario de registro, una pantalla de inicio de sesión y una página que sólo se puede acceder si iniciamos sesión. Para eso vamos a crear un servidor en node con express para manejar tanto el front como el backend. Si te interesa aprender a desarrollar un sitio como este y aprender los procedimientos que hay detrás de un registro de una cuenta (con el guardado de la contraseña de manera segura), la comprobación de las credenciales de login con JWT (json web token) y el manejo de accesos a distintas partes de un sitio web estás en el lugar indicado.
    Vamos a usar un montón de librerías: express, nodemon, bcryptjs, jasonwebtoken, cookie-parser y dotenv.
    Copiate mi código! github.com/cacalo/Registro-y-...
    ¿Querés agregar un mail de confirmación al registro? Lo hacemos en el video que viene! • Envio de emails de ver...
    Timestamps:
    00:00:00 - Intro
    00:00:27 - Creación de proyecto y dependencias
    00:05:48 - Configuración del servidor y ruteo
    00:15:39 - Diseño de formularios - Frontend
    00:33:16 - Registro (Funcionalidad)
    00:47:57 - Hash y salt de contraseñas
    00:58:49 - Login (Funcionalidad)
    01:06:49 - Generar token JWT
    01:17:44 - Cerrar sesión
    01:19:04 - Autorización
    01:33:52 - Ventajas sobre HTML sin server

Komentáře • 150

  • @matiasbruna13
    @matiasbruna13 Před 6 měsíci

    Profe un gusto muy bien explicado todo. con detalle! saludos !

  • @sergio2524
    @sergio2524 Před 7 měsíci

    Un genio muy buen video, gracias por compartir

  • @FRANSHUGOOBREGONFIGUEROA
    @FRANSHUGOOBREGONFIGUEROA Před 4 měsíci

    Excelente explicación , nuevo suscriptor!

    • @puntojson
      @puntojson  Před měsícem

      Gracias! Nos vemos en futuros videos!

  • @carolinasalomrivero4788
    @carolinasalomrivero4788 Před 8 měsíci

    Verdaderamente genial este video.... Muchas gracias por este contenido. ME has sacado un montón de dudas...

    • @puntojson
      @puntojson  Před 8 měsíci

      Me alegra haberte podido sacar esas dudas! 😊

  • @SolaPazEnergy
    @SolaPazEnergy Před 4 měsíci

    Muy bueno todo este trabajo amigo y me lo voy a tomar en serio con todas estas explicaciones dadas. Gracias y saludos

    • @puntojson
      @puntojson  Před měsícem

      Gracias! Los hago largo a los videos para que se lo tomen en serio!

  • @karimantoniosotolopez1441
    @karimantoniosotolopez1441 Před 3 měsíci

    muchisimas gracias por tus videos, la verdad es admirable que gente dedique de su tiempo para ayudar a otros.

    • @puntojson
      @puntojson  Před měsícem

      Gracias! Es cierto que lleva bastante tiempo :)

  • @facundosilveira7366
    @facundosilveira7366 Před 3 měsíci +1

    Man, sos un capo, sin palabras, todo clarisimo...

  • @urrutiace
    @urrutiace Před 2 měsíci

    Ame este tutorial, re bien explicado!

  • @RicardoGarcia-wk8ds
    @RicardoGarcia-wk8ds Před měsícem

    Nuevo suscriptor, excelente forma de explicar y muy completo.

    • @puntojson
      @puntojson  Před měsícem +1

      Gracias Ricardo! Nos vemos en próximos videos!

  • @fredericarias3081
    @fredericarias3081 Před 4 měsíci

    muy buen turorial, muy claro y sencillo para quienes estamos aprendiendo

  • @kimberlysoler592
    @kimberlysoler592 Před 8 měsíci

    Buenas noches, quería pasar por acá agradeciendo por la explicación del video, me ayudó bastante para poder crear mi propio formulario desde express.js

    • @puntojson
      @puntojson  Před 8 měsíci

      Me alegra que te haya servido!

  • @edermartinez8773
    @edermartinez8773 Před měsícem

    Que increíble video, pude reforzar mis conocimientos con el

    • @puntojson
      @puntojson  Před měsícem

      Joya! Me encanta que aprendan

  • @sherlockh.4238
    @sherlockh.4238 Před 5 měsíci +1

    Muy útil, realmente no sabia como encarar el tema del login en Node pero con esto me quedo mas claro manejar el tema cookies

    • @puntojson
      @puntojson  Před 4 měsíci

      Me alegra que te haya servido!

  • @federicodemeco2065
    @federicodemeco2065 Před 4 měsíci

    Grosisimo! Muy bien explicado! :D

  • @javierarango4610
    @javierarango4610 Před 5 měsíci

    uff 10/10 muy buena explicación nuevo sub, voy aprendiendo node desde cero sin duda con esto y mias bases podre hacer un proyecto bastante seguro, muchas gracias!! y te mereces mas like es muy poco lo que te doy por este valioso contenido!!

    • @puntojson
      @puntojson  Před 5 měsíci +1

      Gracias por tu hermoso mensaje! Suerte en este camino del desarrollador!

  • @fuerteviento2133
    @fuerteviento2133 Před 8 měsíci +1

    Excelente video ,💪🏼💪🏼muy completo y explicado de una manera increíble, estaría increíble que siguieras subiendo este tipo de videos de Nodejs, Muchas Gracias. Saludos desde Colombia

    • @puntojson
      @puntojson  Před 8 měsíci

      Ya son varios que quieren nodeJs, relamente lo tengo que seguir haciendo..!

  • @WayraInnovaTech
    @WayraInnovaTech Před 19 dny

    Gracias por este magnífico tutorial 👍👍👍

    • @puntojson
      @puntojson  Před 18 dny

      De nada! Me alegro de que te haya gustado!

  • @spookybone
    @spookybone Před 14 dny

    Muchas gracias profe, me salvaste

  • @nahueldiaz4047
    @nahueldiaz4047 Před 6 měsíci

    Un lujo amigo

    • @puntojson
      @puntojson  Před 6 měsíci

      Gracias! Espero que te haya servido!

  • @nelsonrivera6036
    @nelsonrivera6036 Před 4 dny

    Excelente, muchas gracias

    • @puntojson
      @puntojson  Před 4 dny

      De nada 😊
      Gracias por pasarte!

  • @miguelthomann2098
    @miguelthomann2098 Před 3 měsíci

    Excelente video, muchas gracias, creo que me va a ser útil para un proyecto de una app para operar la base de datos que usa una e-comerce, por ejemplo

    • @puntojson
      @puntojson  Před měsícem

      Claro que sí! Con esto ya se puede hacer casi de todo. Aunque si vas a hacer sólo un ecommerce "normal" hay soluciones hechas por otras personas que quizás te sirvan mejor.

  • @erickpavon9607
    @erickpavon9607 Před měsícem

    Muy buen login 🤩

  • @carlosmbravoa
    @carlosmbravoa Před rokem

    EL video que necesito y tengo rato buscando

    • @puntojson
      @puntojson  Před rokem +2

      Ojalá esté a la altura!

    • @puntojson
      @puntojson  Před rokem +1

      Me apareció en las notificaciones que tenías un problema, pero cuando entro al video el comentario no está! ¿Lo pudiste solucionar y borraste o seguís trabado?

    • @carlosmbravoa
      @carlosmbravoa Před rokem +1

      Gracias por tu interes, escribí tal cual tu tutorial pero no mostró el template. Lo solucioné pero de forma distinta, tuve que escribir '/public/pages/index.html'. No entiendo por qué?🤣

    • @puntojson
      @puntojson  Před rokem +1

      @@carlosmbravoa Sin el __dirname?? 😵‍💫😵‍💫😵‍💫😵‍💫 emm tiene pinta de que debe haber un cambio en algún otro lado porque a mí no me funcionaba así jajaja

    • @carlosmbravoa
      @carlosmbravoa Před rokem

      @@puntojson con el __dirname pero la declaración de public solamente no basto, debí colocar el endpoint completo. Aquí vamos 🤣🤣 así aprendemos más 🤣

  • @julianhincapie3007
    @julianhincapie3007 Před 9 měsíci

    Deberías continuar esta web a mi me ha servido mucho.

    • @puntojson
      @puntojson  Před 9 měsíci +2

      Gracias! Lo voy a tener en cuenta

    • @julianhincapie3007
      @julianhincapie3007 Před 9 měsíci

      @@puntojson uy por favor, asi sea un crud de el register, me esta sirviendo mucho para un bootcamp en el que estoy, con esto inicié el proyecto😅, "respondí por que no creí que me ibas a contestar jaja", gracias.

  • @sabripereira
    @sabripereira Před rokem

    Me re sirve aprender un poco sobre como generar un token y algo de autorización 😅😅 gracias!!

    • @puntojson
      @puntojson  Před rokem +1

      Register y login, los vas a tener que hacer sí o sí :)
      Gracias pro estar!

    • @sabripereira
      @sabripereira Před rokem

      @@puntojson A vos por los videos 😁

  • @ejohanriascos
    @ejohanriascos Před 4 měsíci

    ¡Genial! Puedes hacer uno sobre filtros a traves a un "search bar" seria genial si usaras una base de datos tambien con este idea que propongo! Bueno saludos desde Colombia

    • @puntojson
      @puntojson  Před měsícem

      Me gusta la idea, no sé si para un video exclusivo pero sí para integrar dentro de otro, me la anoto!

  • @R3flexx2001
    @R3flexx2001 Před měsícem

    Muchas gracias por tu video, anda excelente. Un único detalle, en las funciones soloAdmin y soloPúblico hay que poner un await en la variable loggeado. Saludos!

    • @puntojson
      @puntojson  Před měsícem

      Gracias por comentar!
      Veo en el código que la función revisarCookie() no es async, por lo que poner un await en loggeado=revisarCookie() no debería tener efecto. Quizás escribiste algo distinto a mí porque creo que sino no me tendría que funcionar. O quizás me confundí en algo, tampoco sería tan raro jajaja

  • @ariel18012
    @ariel18012 Před 8 měsíci

    Fantástico video profe, completísimo, me dio muchísimas ideas, y por esto ya me suscribí
    al canal, se que su gusto es por angular, pero podrá aporta los mismos proyectos para
    react js, ojala que si. Saludos!!!

    • @puntojson
      @puntojson  Před 8 měsíci +1

      Gracias! React va a estar complicado que haga algo..! Estoy siempre repasando Angular para laburar y para mis alumnos de la facultad. :/
      Espero que el resto del contenido te sirva!

    • @ariel18012
      @ariel18012 Před 8 měsíci

      @@puntojson claro que si amigo y como se agradece. No hay casi nada de comunicación de Backend con Frontend-Vanilla, y al nivel que lo haces vos y en español. Sigue así...!!!

    • @puntojson
      @puntojson  Před 8 měsíci

      Gracias por la buena onda!! Justamente backend y frontend vainilla no es mi preferido, y generalmente no se usa porque las opciones modernas traen ventajas reales, al menos al trabajar con frontend que es lo que más hago. Pero voy a intentar subir más videos de este estilo..!

    • @g4bri3ltt88
      @g4bri3ltt88 Před 5 měsíci

      Angular es el framework de js no?

  • @brunocollazo4062
    @brunocollazo4062 Před 10 měsíci

    SOLUCIONADO GRACIAS SOS CRACK!

    • @puntojson
      @puntojson  Před 10 měsíci +1

      Tiene pinta de que le erraste en poner la variable de entorno del secret cuando revisas el jwt.
      Sin el código es difícil decirlo con certeza.. Si lo subis a github quizás lo pueda revisar!

    • @brunocollazo4062
      @brunocollazo4062 Před 10 měsíci

      @@puntojson Logré solucionarlo, efectivamente era un error en el .env
      Ahora estoy en proceso de conectarlo con la base de datos Strapi, algún consejo/video que recomiendes para ir aprendiendo?=

    • @puntojson
      @puntojson  Před 10 měsíci

      Nunca usé Strapi, asique hasta acá llega mi ayuda! :/ @@brunocollazo4062

    • @brunocollazo4062
      @brunocollazo4062 Před 10 měsíci

      @@puntojson Bueno, muchas gracias igual, crack total. Sigo pendiente de tus siguientes videos. Todos muy buenos y utiles. Saludos

  • @josedavidgonzalezguevara7857

    Infinitas gracias!!!!!!!, me ayudaste un monton 🙏, todo mi respeto y admiración para ti. Tengo 2 consultas :
    1. Como le hiciste para aprender todo eso, parece que te supieras cada linea de codigo de memoria, si quiero llegar a dominar node y todos esos conceptos como tu, como tengo que estudiar ?
    2. Que curso me recomiendas de Node js desde cero, hice este tutorial para una tarea de mi facultad, pero aun no he empezado a aprender node.
    De nuevo mil gracias, bendiciones.

    • @puntojson
      @puntojson  Před měsícem

      De nada José!
      Te respondo las consultas :
      1) Hablo y explico con tanta confianza porque al proyecto ya lo hice de antemano, y si bien estoy escribiendo todo en vivo suelen pasar sólo un par de días desde que lo hice y lo tengo fresco en la memoria! Además tengo el código en otro monitor para quedarme tranquilo.
      2) No te puedo recomendar nada porque yo aprendí node por CZcams, con videos como este! Antes de aprender node tenía otras experiencias, asique si bien aprender con videos así a mí se ve da muy bien, depende de cuánto sepas de programación en general y tus experiencias para ver cuanto de un video podés absorber. Mi método n1 para aprender es querer construir algo y buscar como se hace, no aprender herramientas aleatorias y esperar que en el futuro me sirvan.
      Espero que mi respuesta te sirva. Saludos!

  • @tor-code
    @tor-code Před 10 měsíci

    Excelente, me gusto mucho y con una explicación de 10👌. Como puedo conectarlo a una base de datos PostgreSQL, cree que pueda hacer un capitulo con el tema? o tiene algun curso relacionado? Estoy aprendiendo ya que tengo que migrar una aplicacion de escritorio a Web.
    Muy agradecido con este capitulo, un suscriptor mas porque veo que tiene videos muy interesantes, saludos 👍💯

    • @puntojson
      @puntojson  Před 10 měsíci +1

      Gracias por tu mensaje!
      El único video que tengo que te puede ayudar es mi backend básico con mysql => czcams.com/video/UEjf7k32mTg/video.html
      No es con Postgre pero no creo que sea demasiado distinto, sólo hay que cambiar la librería y el SQL es lo mismo, sql.
      Si eso no es lo que buscás te comento que tengo una idea de hacer un curso de back (para el front que estoy creando en el curso actual), pero eso no lo tendría hasta dentro de varios meses.
      Nos vemos en algún próximo video :)

    • @tor-code
      @tor-code Před 10 měsíci

      @@puntojson Muchas gracias, revisare ese video que comenta y veré que tal me va, y los de Angular que hay en su canal.
      Sera bienvenido el curso de back, y una pregunta mas... da tutorías personalizadas en algunas dudas que surgen o cosas que no me resulten bien, claro con su costo respectivo, ya que me interesa muchísimo? Muchas gracias.

    • @puntojson
      @puntojson  Před 10 měsíci +1

      @@tor-code Buenas!
      Hasta ahora no lo he hecho una mentoría personalizada (al menos no a alguien de afuera, sí a mis alumnos de la facultad todo el tiempo), pero podríamos charlarlo.

    • @tor-code
      @tor-code Před 10 měsíci

      @@puntojson Bien, veré mas de sus cursos y documentarme y pruebas, cuanto tenga el proyecto le dejare mensaje para de ser posible alguna mentoría , muchas gracias👍🏻

    • @puntojson
      @puntojson  Před 10 měsíci +1

      @@tor-code Joya! Ahí estuve revisando y también subís un montón de videos! Que bueno encontrar un colega. Nos hablamos.

  • @ghoulhex2
    @ghoulhex2 Před 11 měsíci

    en el caso de que quiera agregar diferentes rutas dentro del entorno de admin, el enrutamiento deberia hacerse desde el index.js? por ejemplo, tengo una web armada pero las paginas estan enrutadas con html, todo muy basico. si quiero agregarlas a este proyecto, para que no pueda ingresarse a esas rutas sin antes haber iniciado sesion, solo basta con llamar al script en cada uno de esos html o habria que hacerle algo mas? impecable explicacion, me sirvio banda, muchas gracias!

    • @puntojson
      @puntojson  Před 11 měsíci +1

      Hay distintas maneras de hacer el enrutamiento por roles, si usás un servidor de express como hago en este video, entonces tenés que tener el front y el back todos juntos en la aplicación de nodejs y express.
      Después te creás una ruta nueva desde app.get() y le ponés un middleware que revise si tenés permiso de ver esa página o no. Si tenés permiso te manda la página que ya tenés creada, y si no tiene permiso le mandás un redirect al "home" o a "register".
      Osea, es lo que me estás escribiendo.
      Gracias por el comentario y me encanta poder haberte ayudado!

  • @marcosrusch5415
    @marcosrusch5415 Před 10 měsíci

    Hola como estas? excelente el video tutorial, te consulto estoy haciendo un proyecto de ecommerce utilizando nodeJs, Express, mysql2 y ejs, cuestión que cuando el usuario este validado necesito modificar el frontend para que en vez de que aparezca login sea logout, pero no entiendo como tomar la información de que esta validado el usuario para implementar esas modificaciones desde el Js de front,

    • @puntojson
      @puntojson  Před 10 měsíci

      Buenas Marcos!
      Un par de maneras:
      *En principio, teniendo en cuenta el ejemplo de este video, las páginas son o para users logueados o para users no logueados, como el middleware ya revisa eso en las páginas que dicen "login" son exclusivas para gente sin loguearse, o viceversa.
      *Si tus páginas son compartidas, entonces se me ocurren algunas variantes:
      1) Revisar si tenés una cookie guardada y confiar en que la cookie está bien (No la podés validar en front end porque tendrías que guardar la clave secreta de JWT en el front).
      2) En vez de confiar en el paso anterior podés crear un endpoint en el back que lo revise y llamás a esa URL cuando entrás a una página. (También es vulnerable a ciertos ataques).
      3) En vez de servir archivos estáticos y modificarlos en el front, podrías generar (renderizar) el HTML desde el back y ya servirlo al front con el texto correcto, esta manera es la más segura, pero tiene pasos extras que no contemplé en este video, en donde sólo sirvo archivos HTML estáticos al front.
      Por más de que la correcta sea la 3, si estás en un proyecto que no maneja información sensible o si el cambio de un user logueado a uno no logueado no es demasiado grave, entonces la opción 1 podría ser suficiente.
      Dejame saber si fui claro y si entendiste! Saludos!

  • @sergioperez8971
    @sergioperez8971 Před 2 měsíci

    Hola estimado!!! muy bueno el tutorial!! Como hace poco que empecé a estudiar JS, estoy haciendo mis primeras prácticas tratanto de desarrollar BE y FE por separado y en esta oportunidad no me estoy dando cuenta como estructurarlo al sistema de login/registro con esa arquitectura... los HTML y JS de login y registro, van del lado del FE o separados, los HTML en el FE y los JS en el BE?? Y la carpeta "publica" en donde estaría?
    Desde ya muchisimas gracias!!!

    • @puntojson
      @puntojson  Před měsícem

      Buenas!
      Si hacemos todo por separado, las carpetas pages y public serían FE y el resto (index.js, controllers y services) serían BE.
      Todo lo que es HTML, CSS o JS cargado en un html sería FE.
      Lo que está dentro de la carpeta pública acá, iría en carpetas llamadas CSS, JS.

  • @luisnorton3100
    @luisnorton3100 Před měsícem

    Hola, buen contenido! Si puedes agrandar un poco mas el código, sería genial

    • @puntojson
      @puntojson  Před měsícem +1

      Buenas! Gracias por el comentario! Cada vez que grabo pongo un tamaño de texto cualquiera, me voy a tener que poner las pilas en dejarlo siempre un poco más grande.!

    • @josedavidgonzalezguevara7857
      @josedavidgonzalezguevara7857 Před měsícem +1

      Yo hago zoom a la pantalla y se ve perfecto.
      Saludos.

    • @luisnorton3100
      @luisnorton3100 Před měsícem

      @@josedavidgonzalezguevara7857 Hola, gracias por responder. En mi ordenador cuando hago sum, el video se distorsiona, debe ser mi equipo! Pero le he mandado el mismo mensaje a otros y han mejorado el sum y los videos son geniales. estoy entre las personas que tenemos problema de visibilidad

  • @necrobaku811
    @necrobaku811 Před 9 měsíci

    no es necesario tener una base de datos como sql o postgre para realizar el login? donde se esta guardando la info?

    • @puntojson
      @puntojson  Před 9 měsíci

      Exactamente! En este momento estoy guardando todo en la memoria ram del dispositivo server, osea que se borra todo cuando cargas la app!
      Sin embargo dejo todo para que de manera sencilla conectes una base de datos.!

  • @DanielMorales-ms6kv
    @DanielMorales-ms6kv Před 7 měsíci

    Buen video, pero tengo una duda, puedo usarlo como una api para consumirla tanto en una página web como en una app móvil?

    • @puntojson
      @puntojson  Před 7 měsíci

      Sí!
      Si querés hacer una API te recomiendo igual dos cosas:
      * Si querés una API rápida y segura, te conviene trabajar en otro lenguaje (C# con .net, Java, etc), nodeJs funciona bien para aplicaciones tranca pero no escala de la mejor manera.
      * Si querés que sea sólo api sin la capa de la vista, osea sin renderizar nada de html css y js para el cliente, entonces te recomiendo que hagas sólo rutas controladores y servicios, y manejes todo lo relacionado a vistas desde la aplicación de frontend, que será completamente aislada de tu api!
      Saludos!

  • @floyd844
    @floyd844 Před 2 měsíci

    Hola, cuál es la diferencia de usar path en __dirname que simplemente usar import.meta.dirname? Lo segundo no trae ya la ruta desde la raíz?

    • @puntojson
      @puntojson  Před měsícem

      Emmm la verdad es no estoy seguro. Quizás hubo un cambio en la manera de lograr lo mismo. Esa línea la vengo heredando hace bastante y quizás es hora de actualizarla.

  • @JorgeRustrian
    @JorgeRustrian Před 8 měsíci

    uff tu video es de gran ayuda. Pero tengo una consulta, supongamos estoy construyendo una web con 3 tipos de usuarios: pacientes, doctor, y enfermera, tengo problema en lo siguiente, el paciente loggeado debe llenar un formulario, y enviarselo al doctor que eliga, por lo que no s ecomo pasar los datos del formulario al perfil del doctor

    • @puntojson
      @puntojson  Před 8 měsíci

      Buenas! Espero que mi respuesta no llegue demasiado tarde!
      Para hacer lo que querés necesitás usar de las relaciones que te puede dar una base de datos relacional.
      Cuando el paciente complete su formulario, uno de los campos debería ser a qué doctor se lo quiere enviar, ese "select" debería guardar en el formulario el ID del doctor al cual está destinado el formulario.
      Luego desde el rol "doctor" deberías poder ver una lista de los formularios subidos filtrados por su id_doctor. Esto haría que cada doctor vea sólo sus formularios y no el de los demás.
      Espero que esto te sirva!

  • @WILLIAMANDRESBARREROCARMONA
    @WILLIAMANDRESBARREROCARMONA Před 3 měsíci

    que tendría que hacer resumidamente si quiero que se puedan loggear 2 tipos de usuarios y dependiendo del usuario les muestre una u otra cosa?

    • @puntojson
      @puntojson  Před měsícem

      Si mirás por este video hace rato respondí lo mismo a otro usuario con detalle. Tenés que tener una propiedad ROL en la tabla de usuarios, y luego al hacer login leer el rol y cambiar el redirect que te hace cuando hacés login a distintos lugares.
      También en la autorización vas a tener que revisar no sólo si la persona está logueada, sino que vas a tener que revisar si ese rol tiene permiso para lo que te pide.

  • @pabelorlandochaparromanriq8077

    Una pregunta urgente, Si tengo 3 usuarios: Admin, Regular, Vendedor cada uno se diferente por el rol que se les da en la base datos, ¿ Como hago que en la autorizaciones los dirija a diferentes pantallas de logeo pero que los otros no puedan ver esas pantallas?

    • @puntojson
      @puntojson  Před měsícem

      Perdón! Sé que dijiste urgente pero recién te veo!
      Básicamente tendrías que revisar antes de la línea 41 del authentication.controller github.com/cacalo/Registro-y-login-nodejs-express-en-vivo/blob/main/app/controllers/authentication.controller.js el rol del usuario, y con un if o un switch cambiar el redirect de la línea 41.
      Saludos!

  • @hernandw
    @hernandw Před 2 měsíci

    Hola procesan el formulario en el html. Pero puedes mandar directamente los datos del formulario al backend. porque el backend recibe un body. porque entonces hacerla la logica en el frontend.. para luego enviarlo igual enviar un body al backend no es reduntante..?

    • @puntojson
      @puntojson  Před měsícem +1

      Es redundante! Exactamente.
      La validación de datos en frontend se hace para dar una mejor experiencia al usuario, está bueno que te digan que tu contraseña tiene que tener 8 caracteres antes de enviar todo y que vuelva con error.
      La validación en backend se hace porque es la única validación que el cliente teoricamente no puede "saltearse", ya que la validación de frontend se puede evitar de muchas maneras.
      Para tener seguridad de datos y buena experiencia de usuario vamos a tener que hacer las 2.

  • @nickvidzhd845
    @nickvidzhd845 Před 8 měsíci

    Hola profe!, muchas gracias por el video. Estoy teniendo un inconveniente al momento del login mas exactamente en la parte del Fetch. Se supone que debe redirigir hacia el /api/login sin embargo al momento de hacer el post dice que no lo encuentra (Error 404). Muchas gracias!

    • @puntojson
      @puntojson  Před 8 měsíci

      Mmm 404 es no encontrado (como bien decís), generalmente estos errores no son complejos y es un error de tipeo, hay dos lugares en donde puede haber problemas:
      1) En el fetch podés estar poniendo una dirección errónea, quizás con un error de ortografía. Osea, estás queriendo hacer un fetch a un lugar que no existe.
      2) En el index.js donde tenés el app.post("/api/login") quizás podés tener o un error de ortografía en el endpoint o no es post. Osea, por más de que existe un lugar, este no es el que pensás y entonces nunca estás recibiendo una comunicación en ese endpoint.
      Decime si algo de esto de ayuda! Se me complica sin el código!
      Saludos!

  • @sebastianriveramira7762
    @sebastianriveramira7762 Před 5 měsíci

    M O S T R O

  • @NahuelHermosilla-hb6qi

    en caso de querer hostear la pagina ej: Netlify como hago? por que hice el index.html pero a la hora de redirigir con un boton a la pagina del login me aparece en blanco pero si lo abro directo desde el localhost si me aparecen todos los estilos etc etc

    • @puntojson
      @puntojson  Před 23 dny

      Es que no lo vas a poder hostear en netlify (creo) , lo tenés que hostear en heroku u otro servicio que hostee aplicaciones de node. Hay algunos gratuitos dando vueltas pero no te podría recomendar ninguno.
      Googlea como hostear nodejs.
      En un futuro tendría que hacer un video de eso.!

  • @gabrielnivar2377
    @gabrielnivar2377 Před 9 měsíci

    buenas tengo un problema cuando trato de conetarme en el puero 4000

    • @puntojson
      @puntojson  Před 9 měsíci

      Buenas! Me dirías cuál es el problema? Explicalo como puedas.!

  • @dyvfyh3419
    @dyvfyh3419 Před 6 měsíci

    Oye una duda, mi cmd por alguna razon cuando lo abro y trabajo con el durante un nos cuantos segundos se me cierra solo
    Hay alguna forma de arrancar sin usar la consola o no?

    • @puntojson
      @puntojson  Před 6 měsíci

      Que raro!
      Si no podés usar el CMD hay otras consolas que también sirven.
      Por ejemplo en windows tenés el powershell, que es otra consola. La primera vez que intentes ejecutar un script te va a dar un error de permisos, que para solucionarlo vas a tener que copiar y pegar un código, que no tengo a mano, pero es algo de setExecutionPolicies: allow (lo vas a tener que googlear).
      Te recomiendo que en vez de buscar un parche, veas como solucionar lo de la consola, porque si bien ahora puede que no te trabe, es algo que te va a molestar en mucho dentro de tu camino de programador.
      También podrían intentar abrir la consola desde VScode o tu editor de preferencia, quizás ahí no se cierra.

    • @dyvfyh3419
      @dyvfyh3419 Před 6 měsíci

      @@puntojson he probado con powershell y la consola de vscode
      Todos acaban con el mismo resultado, el problema comenzo cuando me instale frameworks 3.5 en el 2022

    • @puntojson
      @puntojson  Před 6 měsíci

      A desinstalar todo, uno a uno probando.
      Si nada resulta siempre queda la opción final, un lindo formateo a la pc. Ojalá lo puedas resolver.

  • @user-dc4xl5wz2m
    @user-dc4xl5wz2m Před 5 měsíci

    profesor todo un crack pero un favor es trate de entro por medio de mi celular la api creada en el pc carga el html y lo demás para cuando enviar los el formulario por el navegador del celular no hace nada investigue indica es por lo lo CORS , huy seria genial como solucionar ese problemas gracias.

    • @puntojson
      @puntojson  Před měsícem

      Buenas!
      2 cosas a tener en cuenta.
      1) Si estás del celular y el servidor lo tenés en otro dispositivo, quizás haya que cambiar todas las referencias de "localhost" a la dirección IP real del server.
      2) Si trabajamos con dispositivos distintos (el server no es el cliente) entonces tenemos que usar cors, es tán facil como poner en el index.js github.com/cacalo/Registro-y-login-nodejs-express-en-vivo/blob/main/app/index.js un middleware de cors, mirá como lo hice en este archivo github.com/cacalo/Cocheras-basico-backend/blob/main/src/app.js

  • @miguelseguias2211
    @miguelseguias2211 Před 7 měsíci

    a mi me esta pasando que hago bien el registro, pero cuando le doy a iniciar sesion, me sale en el node "jsonwebtoken\sign.js:111
    return failure(new Error('secretOrPrivateKey must have a value'))"

    • @puntojson
      @puntojson  Před 7 měsíci

      Migue! Te fijás si le estás proveyendo a jwt la clave secreta? Sin ese dato jwt no sabe con qué clave encriptar y firmar el token que se genera!
      Fijate de tener la clave secreta en el .env y dársela correctamente a jwt

  • @sgvbox
    @sgvbox Před 5 měsíci

    Por qué no usar un label hidden?

    • @puntojson
      @puntojson  Před měsícem

      Si ocultas visualmente objetos con significado semántico con display:none o hidden puede confundir a los lectores de pantalla. Por eso una solución "más o menos" es mandarlo bien lejos!

  • @tomasandresmartinez3625

    no se que me pasa paro no me deja ingresar al admin

    • @puntojson
      @puntojson  Před 4 dny

      Sin más data imposible saber que hacer! Fijate si hay logs en la terminal o en el navegador y avisame!

  • @luciamorua6720
    @luciamorua6720 Před 16 dny

    Hola, al inicio del proyecto no me toma el archivo css ni js. Me tira un error de MIME. Está todo bien escrito. Incluso copié de tu código de github

    • @puntojson
      @puntojson  Před 16 dny

      Pueden ser varias cosas! Fijate si cuando vinculás los archivos js y css el href empieza con /, es importante que sea así para que el navegador busque los archivos dentro de la carpeta de proyecto.
      Avisame que tal y si seguís con problemas compartime algo del código.
      Saludos!

    • @luciamorua6720
      @luciamorua6720 Před 16 dny

      @@puntojson te paso el HTML

      Iniciar sesión

      Prueba

    • @luciamorua6720
      @luciamorua6720 Před 16 dny

      Ya probé poniéndole solamente /style.css y me salta que no existe y me pregunta si deseo crear un archivo que se llame así. Así que probé de la forma que te acabo de pasar y si me lleva al archivo que ya cree..

    • @puntojson
      @puntojson  Před 15 dny

      Me podrías poner un link a una captura de pantalla donde se vea la estructura de carpeta y archivos de tu proyecto?
      También podrías subir todo a github y mandarme el link si sabés como hacerlo.
      Tengo el presentimiento de que, o tus nombres de archivos se llaman distinto, o están en otras carpetas.
      Cuando completás los nombres de los archivos, usas el auto completado del editor?

  • @davidtabora575
    @davidtabora575 Před měsícem

    El programa no funciona con versiones recientes, hice todo al pie de la letra y solo errores me da cuando ejecuto el servidor.

    • @puntojson
      @puntojson  Před měsícem

      Buenas!
      Me podrías decir que errores estás teniendo? Quizás no es un tema de versiones (o quizás sí)

    • @Tiankiss
      @Tiankiss Před měsícem

      @@puntojson Yo tenogo un error a la hora del tema con las cookies, al parecer el servidor recibe la respuesta pero no actua en nada, y para añadir, salta error aun asi siendo crrecto todo

    • @puntojson
      @puntojson  Před měsícem

      @@Tiankiss Buenas! No te termino de entender. El servidor no debería recibir respuestas, recibe solucitudes y crea las respuestas para luego enviarlas al cliente. ¿Qué dice el error que te aparece?

    • @noalbullyngbro4078
      @noalbullyngbro4078 Před měsícem

      @@puntojson Como va, este es mi repositorio Tiankissdev/ProgramacionProyecto no se porque desde mi otra cuenta no me dejaba comentarte ni responderte, tengo un error en las cookis, rescibe la res pero no redirecciona y por mas que este todo bien creo, salta error de logueo

  • @jhon9490
    @jhon9490 Před 11 měsíci

    Me salia un erro a la hora de hacer el token por exportar el jsonwebtoken de esta manera: "import { JsonWebTokenError } from "jsonwebtoken";". Encontre una solucion, exportarlo distinto, asi: import jwt from 'jsonwebtoken';
    Adicionalmente a eso, tambien tuve que cambiar la linea de codigo: "const token = jsonwebtoken.sign(...)" por "const token = jwt.sign(...)"

    • @puntojson
      @puntojson  Před 11 měsíci

      Gracias por el aporte! Quizás le sirve a otro espectador 😊

    • @jhon9490
      @jhon9490 Před 10 měsíci

      este proyecto se puede considerar una api?@@puntojson

  • @darksecurity
    @darksecurity Před 4 měsíci

    porque no haces de un formulario

    • @puntojson
      @puntojson  Před měsícem

      ??

    • @darksecurity
      @darksecurity Před měsícem

      @@puntojson formulario conectado a usa base de datos

    • @puntojson
      @puntojson  Před měsícem

      @@darksecurity Perdón pero sigo sin entender, ¿querés obtener las preguntas del formulario desde una base de datos o querés guardar las respuestas en una base de datos al estilo de un google forms?

    • @darksecurity
      @darksecurity Před měsícem

      @@puntojsonsii que guarde la informacion que llegue a una base de datos

  •  Před 2 měsíci

    se me traba en la parte donde cambio
    app.get("/", (req, res) => res.sendFile(path.join(__dirname, `/pages/login.html`)))
    a esto
    app.get("/", authorization.soloPublico, (req, res) => res.sendFile(path.join(__dirname, `/pages/login.html`)))
    .
    la web del proyecto se queda cargando y no responde como debería

    •  Před 2 měsíci

      en authorization.js
      funcion revisarCookie
      comprobamos si existe cookie
      todo error = falso || verificamos la cookie
      todo error = falso || if a la verificacion / si todo esta bien es verdadero
      funcion soloAdmin
      esta logueado (funcion revisarCookie)
      si => next
      no => res.redirect ("/")
      funcion soloPublic
      esta logueado (funcion revisarCookie)
      no => next
      si => res.redirect ("/admin")

    • @puntojson
      @puntojson  Před měsícem

      Cuando estamos trabajando con redirects y algo se queda trabado como en un bucle infinito, probablemente es un problema de referencia circular en un redirect.
      Ej: Entrás a una página que te lleva a un redirect, la página a la cual te redireccionó tiene también un redirect a la página original o a sí misma.
      En ese caso tenés redirects infinitos, buscá en la lógica si esto está pasando en tu app!
      Saludos