Сериализация пользовательского объекта
Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . Сериализация и десериализация являются важными понятиями в отношении аутентификации. Сериализация объекта означает преобразование его содержимого в небольшой ключ, по существу, который затем может быть десериализован в исходный объект. Это то, что позволяет нам узнать, кто передал сервер без необходимости отправлять данные аутентификации, такие как имя пользователя и пароль, при каждом запросе на новую страницу. Чтобы правильно установить это, нам нужно иметь функцию сериализации и функцию десериализации. В паспорте мы создаем их с passport.serializeUser( OURFUNCTION )
и passport.deserializeUser( OURFUNCTION )
. Сериализуемый вызов вызывается с двумя аргументами, полным пользовательским объектом и обратным вызовом, используемым паспортом. Возвращенный в обратном вызове должен быть уникальным ключом для идентификации этого пользователя - самым простым из них является использование пользователями _id в объекте, поскольку оно должно быть уникальным по мере его создания MongoDb. Аналогичным образом десериализуется вызов с этим ключом и функцией обратного вызова для паспорта, но на этот раз нам нужно взять этот ключ и вернуть полный объект пользователей на обратный вызов. Чтобы выполнить поиск по запросу Mongo _id, вам нужно будет создать const ObjectID = require('mongodb').ObjectID;
, а затем для его использования вы вызываете new ObjectID(THE_ID)
. Обязательно добавьте MongoDB в качестве зависимости. Вы можете увидеть это в следующих примерах:
passport.serializeUser ((пользователь, сделано) => { done (null, user._id); });
passport.deserializeUser ((id, done) => { db.collection ( 'пользователи'). findOne ( {_id: новый ObjectID (id)}, (err, doc) => { done (null, doc); } ); });ПРИМЕЧАНИЕ. Этот deserializeUser выдает ошибку до тех пор, пока мы не настроим БД на следующем шаге, поэтому закомментируем весь блок и просто
done(null, null)
вызов done(null, null)
в функции deserializeUser. Представьте свою страницу, когда вы думаете, что у вас все в порядке.