Como recordatorio, este proyecto se está construyendo sobre el siguiente proyecto de inicio en Glitch , o clonado desde GitHub . Serialización y deserialización son conceptos importantes en lo que respecta a la autenticación. Serializar un objeto significa convertir su contenido en una clave pequeña que esencialmente se puede deserializar en el objeto original. Esto es lo que nos permite saber quiénes se comunicaron con el servidor sin tener que enviar los datos de autenticación como el nombre de usuario y la contraseña en cada solicitud de una nueva página. Para configurar esto correctamente, necesitamos tener una función de serialización y una función de deserialización. En el pasaporte, los creamos con passport.serializeUser( OURFUNCTION )
y passport.deserializeUser( OURFUNCTION )
Se llama a serializeUser con 2 argumentos, el objeto de usuario completo y una devolución de llamada utilizada por el pasaporte. Devuelto en la devolución de llamada debe ser una clave única para identificar a ese usuario; la más fácil de usar es que los usuarios _id en el objeto, ya que debe ser único, tal como lo generó MongoDb. De manera similar, se llama a deserializeUser con esa clave y también con una función de devolución de llamada para el pasaporte, pero esta vez tenemos que tomar esa clave y devolver el objeto completo de los usuarios a la devolución de llamada. Para realizar una búsqueda de búsqueda de un _id Mongo, tendrá que crear const ObjectID = require('mongodb').ObjectID;
y luego, para usarlo, se llama new ObjectID(THE_ID)
. Asegúrese de agregar MongoDB como una dependencia. Puedes ver esto en los siguientes ejemplos: passport.serializeUser ((usuario, hecho) => {
hecho (nulo, usuario.id);
});
passport.deserializeUser ((id, done) => {
db.collection ('usuarios'). findOne (
{_id: nuevo ObjectID (id)},
(err, doc) => {
hecho (nulo, doc);
}
);
});
NOTA: este deserializeUser generará un error hasta que configuremos la base de datos en el siguiente paso, así que comente el bloque completo y simplemente llame al final done(null, null)
en la función deserializeUser. Envía tu página cuando creas que lo has hecho bien.
## Instructions