3 回答
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
對(duì)于使用Koa和koa-passport的任何人:
知道在serializeUser方法中設(shè)置的用戶(hù)密鑰(通常是該用戶(hù)的唯一ID)將存儲(chǔ)在:
this.session.passport.user
當(dāng)done(null, user)在deserializeUser中設(shè)置時(shí),“ user”是數(shù)據(jù)庫(kù)中的某些用戶(hù)對(duì)象:
this.req.user 要么 this.passport.user
由于某種原因,this.user當(dāng)您在deserializeUser方法中調(diào)用done(null,user)時(shí),永遠(yuǎn)不會(huì)設(shè)置Koa上下文。
因此,您可以在調(diào)用app.use(passport.session())之后將自己的中間件放入this.user中,如下所示:
app.use(function * setUserInContext (next) {
this.user = this.req.user
yield next
})
如果您不清楚serializeUser和deserializeUser如何工作,請(qǐng)?jiān)赥witter上打我。
TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以將整個(gè)用戶(hù)對(duì)象放入會(huì)話(huà)數(shù)據(jù)中,但這通常不是一個(gè)好主意,因?yàn)樗赡軙?huì)有其他副作用。例如,當(dāng)用戶(hù)更新他/她的用戶(hù)名時(shí),您也必須更新會(huì)話(huà)數(shù)據(jù),否則,由于“重命名功能損壞”,您將獲得票證。那是一個(gè)相對(duì)無(wú)害的例子。權(quán)限位或相等的敏感數(shù)據(jù)也可能發(fā)生同樣的事情(糟糕...)。本質(zhì)上,如果您有重復(fù)的數(shù)據(jù),通常會(huì)遇到相同的問(wèn)題。TL; DR-不要這樣做。
- 3 回答
- 0 關(guān)注
- 1372 瀏覽
添加回答
舉報(bào)
