第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解護照序列化反序列化

了解護照序列化反序列化

慕姐4208626 2019-09-27 16:41:46
您如何向外行解釋Passport的序列化和反序列化方法的工作流程。叫到哪里user.id去passport.serializeUser了?我們passport.deserializeUser緊接著在工作流程中調(diào)用它嗎?// used to serialize the user for the sessionpassport.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 userpassport.deserializeUser(function(id, done) {    User.findById(id, function(err, user) {        done(err, user);    });});我仍在努力尋找解決方案。我有一個完整的工作應用程序,沒有遇到任何類型的錯誤。我只是想了解這里到底發(fā)生了什么?任何幫助表示贊賞。
查看完整描述

3 回答

?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

對于使用Koa和koa-passport的任何人:


知道在serializeUser方法中設置的用戶密鑰(通常是該用戶的唯一ID)將存儲在:


this.session.passport.user


當done(null, user)在deserializeUser中設置時,“ user”是數(shù)據(jù)庫中的某些用戶對象:


this.req.user 要么 this.passport.user


由于某種原因,this.user當您在deserializeUser方法中調(diào)用done(null,user)時,永遠不會設置Koa上下文。


因此,您可以在調(diào)用app.use(passport.session())之后將自己的中間件放入this.user中,如下所示:


app.use(function * setUserInContext (next) {

  this.user = this.req.user

  yield next

})

如果您不清楚serializeUser和deserializeUser如何工作,請在Twitter上打我。


查看完整回答
反對 回復 2019-09-27
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

您可以將整個用戶對象放入會話數(shù)據(jù)中,但這通常不是一個好主意,因為它可能會有其他副作用。例如,當用戶更新他/她的用戶名時,您也必須更新會話數(shù)據(jù),否則,由于“重命名功能損壞”,您將獲得票證。那是一個相對無害的例子。權限位或相等的敏感數(shù)據(jù)也可能發(fā)生同樣的事情(糟糕...)。本質(zhì)上,如果您有重復的數(shù)據(jù),通常會遇到相同的問題。TL; DR-不要這樣做。

查看完整回答
反對 回復 2019-09-27
  • 3 回答
  • 0 關注
  • 1331 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號