Bagaimana Anda menjelaskan alur kerja metode serialisasi dan deserialisasi Paspor kepada orang awam.
Ke mana perginya
user.id
setelahpassport.serializeUser
dipanggil?Kami memanggil
passport.deserializeUser
setelah itu di mana itu cocok dalam alur kerja?// used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); // where is this user.id going? Are we supposed to access this anywhere? }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); });
Saya masih mencoba untuk membungkus kepala saya di sekitarnya. Saya memiliki aplikasi yang berfungsi lengkap dan tidak mengalami kesalahan apa pun.
Saya hanya ingin mengerti apa yang sebenarnya terjadi di sini?
Bantuan apa pun dihargai.
user.id
disimpan sebagaireq.session.passport.user
atauuser
sendiri disimpan sebagaireq.session.passport.user
req.session.passport.user = {id: '..'}
bagian dari diagram adalah sedikit off, dan harusreq.session.passport.user = 785352
sebaliknya, di mana785352
adalahuser.id
. Saya mengalami masalah saat masuk log untuk membuktikannya, tetapi sepertinya masuk akal. Saat Anda menelepondone(null, user.id);
, masuk akal untuk mengambil argumen kedua -user.id
dalam hal ini - dan menugaskannyareq.session.passport.user
, alih-alih menugaskannyareq.session.passport.user.id
. Karena bagaimana jika sebaliknya Anda masukuser
?req.sesssion.passport.user.id = user
tidak masuk akal.Untuk siapa saja yang menggunakan Koa dan paspor-koa :
Ketahuilah bahwa kunci untuk pengguna yang ditetapkan dalam metode serializeUser (seringkali id unik untuk pengguna itu) akan disimpan di:
this.session.passport.user
Ketika Anda mengatur di
done(null, user)
deserializeUser di mana 'pengguna' adalah beberapa objek pengguna dari database Anda:this.req.user
ATAUthis.passport.user
untuk beberapa alasan,
this.user
konteks Koa tidak pernah diset ketika Anda memanggil selesai (null, pengguna) dalam metode deserializeUser Anda.Jadi Anda dapat menulis middleware Anda sendiri setelah panggilan ke app.use (passport.session ()) untuk memasukkannya ke dalam pengguna ini seperti:
Jika Anda tidak jelas tentang cara kerja serializeUser dan deserializeUser, tekan saja saya di twitter. @Yvanscher
sumber