Como lembrete, este projeto está sendo construído sobre o seguinte projeto inicial no Glitch , ou clonado a partir do GitHub . Serialização e desserialização são conceitos importantes em relação à autenticação. Serializar um objeto significa converter seu conteúdo em uma pequena chave essencialmente que pode ser desserializada no objeto original. Isso é o que nos permite saber quem se comunicou com o servidor sem ter que enviar os dados de autenticação como nome de usuário e senha em cada solicitação para uma nova página. Para configurá-lo corretamente, precisamos ter uma função de serialização e uma função de desserialização. No passaporte, criamos estes com passport.serializeUser( OURFUNCTION )
e passport.deserializeUser( OURFUNCTION )
O serializeUser é chamado com 2 argumentos, o objeto de usuário completo e um retorno de chamada usado pelo passaporte. Retornado no retorno de chamada deve ser uma chave única para identificar esse usuário, o mais fácil de usar sendo os usuários _id no objeto como deveria ser único, uma vez que gerou pelo MongoDb. Da mesma forma, o deserializeUser é chamado com essa chave e também uma função de retorno de chamada para o passaporte, mas, desta vez, precisamos pegar essa chave e retornar o objeto completo do usuário ao retorno de chamada. Para fazer uma busca de consulta por um Mongo _id você terá que criar const ObjectID = require('mongodb').ObjectID;
e, em seguida, para usá-lo, você chama new ObjectID(THE_ID)
. Certifique-se de adicionar o MongoDB como uma dependência. Você pode ver isso nos exemplos abaixo: passport.serializeUser ((user, done) => {
done (null, user._id);
});
passport.deserializeUser ((id, done) => {
db.collection ('users'). findOne (
{_id: new ObjectID (id)},
(err, doc) => {
done (null, doc);
}
);
});
NOTA: Este deserializeUser irá lançar um erro até que nós configuremos o BD na próxima etapa então comente todo o bloco e apenas chame done(null, null)
na função deserializeUser. Envie sua página quando achar que está certo.
## Instructions