0
我想用NodeJS + Restify和PassportJS編寫REST-API進行身份驗證。 當用戶登錄時,我生成一個sessionId並將其存儲在創建自己的會話中。req.user未定義
var Passport = require('passport');
var PassportBearerStrategy = require('passport-http-bearer').Strategy;
// Authentication
Passport.use(new PassportBearerStrategy(function(sessionId, cb) {
Auth.getSession(sessionId, function(userId){
cb((!!userId), { userId: userId }, userId);
});
}));
server.get(
'/user',
Passport.authenticate('bearer'),
function(req, res, next){
console.info(req.user ); // undefined
respond(res, {});
return next();
}
);
一切正常,除了,在功能波紋管,req.user
是undefined
。我讀過,你必須啓用會話。但是我已經實現了我自己的會話,我不需要另一個會話。
我需要的是,如果我說cb(true, user)
它到達下面的功能。
有什麼辦法解決這個問題嗎?
我從來沒有使用過這種策略,只有本地策略。在本地,你需要有一個函數來序列化和反序列化用戶。這是一個desarialize函數,它可以讓用戶稍後通過req.user訪問該用戶。你不錯過這個功能嗎? – yBrodsky
@yBrodsky,你說得對,這些功能缺失。我添加他們就像這裏描述的:https://stackoverflow.com/questions/27637609/understanding-passport-serialize-deserialize 但req.user仍未定義。 – TSM