El objetivo es construir un sistema de perfil de usuario para mi aplicación web. Un usuario podría iniciar sesión, mantener una sesión y ver su perfil. Después de leer varios tutoriales en línea sobre cómo hacer esto, me siento un poco perdido. Todos usan diferentes bibliotecas y, como alguien nuevo en el desarrollo web, no está claro qué hace cada biblioteca. He visto que se usan las siguientes bibliotecas, ¿alguien puede explicar el flujo de interacciones de perfil de usuario y dónde entra cada biblioteca?
passport passport-local bcrypt-nodejs connect-flash express-session jsonwebtoken express-jwt morgan cookie-parserUna forma de comenzar su aprendizaje puede ser en: https://www.youtube.com/watch?v=Z1ktxiqyiLA Allí aprendí cómo usar la mayoría de los complementos de su pregunta.
Bien, sobre los complementos:
passport pasaporte es un complemento de node.js que se usa generalmente con express que funciona como un middleware responsable de la authorization y authentication
passport-local : es un complemento para passport , más técnicamente una estrategia de autenticación que generalmente se usa con una base de datos o un archivo de configuración.
bcrypt-nodejs se usa generalmente para cifrar las contraseñas en la base de datos (pero es mucho más poderoso que eso), no es bueno guardar la contraseña en texto sin formato.
connect-flash : se usa para los mensajes flash que aparecen en una página "El usuario se agregó correctamente", "Credenciales de usuario no válidas" o cualquier otro mensaje de éxito o error que desee mostrar en una página.
express-session - es un middleware express que es responsable de almacenar la sesión del usuario.
jsonwebtoken : jwt se usa para crear un token que usará para identificar si un usuario fue autenticado o no.
express-jwt : un middleware express para jsonwebtoken
cookie-parser : un middleware express para analizar cookies
morgan , solo un servicio de registro.Ok, entonces deberías entender un poco de teoría aquí:
El passport con estrategia passport-local es un mecanismo de autenticación completo que se supone que se guarda si el usuario está autenticado o no en una sesión, si reinicia el servidor node.js si no mantuvo sus sesiones en un servicio de terceros como base de datos. /archivo, etc... perderá las sesiones.
jsonwebtoken es un mecanismo de autenticación sin estado, no necesita guardar nada en su servidor, solo la "clave secreta". La arquitectura sin estado tiene algunas ventajas interesantes, ya que promueve la escalabilidad horizontal, puede tener un sinfín de nodos que sabrán cómo analizar el token enviado y comprender si el usuario ha iniciado sesión o no. Últimamente voy con jwt como autenticación.