我正在編寫使用node.js和passport.js進行身份驗證的簡單應用程序。在passport.js中的serializeUser函數中訪問請求對象
我可以訪問serializeUser中的請求對象嗎?
我正在編寫使用node.js和passport.js進行身份驗證的簡單應用程序。在passport.js中的serializeUser函數中訪問請求對象
我可以訪問serializeUser中的請求對象嗎?
這其實很簡單:req
如果你req.res.render('whatever'
它的工作原理是添加作爲第一個參數
passport.deserializeUser(function(req, id, done) {...
https://github.com/jaredhanson/passport/issues/111
。
這是正確的答案 – 2017-06-22 03:54:17
我認爲釔和laggingreflex問題略有不同:
要回答釔:
要訪問你所要做的是明確的中間件,將解決你的資源的授權內的請求對象。
function authMethod(req, res, next) {
if (req.isAuthenticated())
{
console.log(req.user);
return next();
}
res.status(401).send({user:undefined});
}
app.get('/',authMethod,function(req,response)
{
res.status(200).send("OK");
}
如果你做了正確的配置,Passaport將修改您的請求對象,所以你可以req.user
訪問用戶信息。您還有一個方法req.isAuthenticated()
來檢查第三方認證是否成功。
要回答laggingreflex:
您不能訪問請求對象內passport.deserializeUser
和passport.serializeUser
,因爲這些方法都是爲了處理的會話中的用戶信息序列化(請看github解釋)。這些方法接收一個對象和一個函數作爲參數。在serializeUser
上,第一個參數是包含用戶信息的對象,您將序列化並傳遞給done
函數(回調)。在deserializeUser
第一個參數是序列化的對象,您必須執行相反的操作。
我想問這個問題。 [看來現在已經有一種方法可以做到這一點](https://github.com/jaredhanson/passport/issues/111),但不幸的是,我對護照的理解並不十分熟悉它的實際工作原理。有人可以請回答這個解釋'req'是如何在'passport.deserializeUser(function(id,done)''內訪問的? – laggingreflex 2014-07-06 00:10:56