Node.js 如何使用passport.js维护web服务会话
我使用passport.js来维护web应用程序的会话和API身份验证,它工作得很好。现在我想将我的API用作android应用程序的web服务。我的问题是,我的代码将适用于web服务,因为我必须维护与移动设备的会话。我正在使用下面的代码Node.js 如何使用passport.js维护web服务会话,node.js,mongodb,express,passport.js,Node.js,Mongodb,Express,Passport.js,我使用passport.js来维护web应用程序的会话和API身份验证,它工作得很好。现在我想将我的API用作android应用程序的web服务。我的问题是,我的代码将适用于web服务,因为我必须维护与移动设备的会话。我正在使用下面的代码 app.use(passport.initialize()); app.use(passport.session()); passport.serializeUser(function(user, done) { done(nul
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
对于API身份验证,我使用中间件
app.get("/contentType",user.requiresLogin, content.selectAllTypes);
exports.requiresLogin = function(req, res, next) {
if (!req.isAuthenticated()) {
return res.status(401).json({error:'User is not authorized'});
}
next();
};
您可以使用Redis存储会话。我必须使用Passport.js,我想知道如果我将我的API用作web服务,那么req.isAuthenticated()会起作用吗@AnojKrishnang KIf如果您正确维护用户会话,req.isAuthenticated()将起作用。如果它不起作用,则使用密钥(加密用户ID(由您决定))将req.user保存在REDIS中。注销时,从REDIS中删除此数据。要检查用户是否经过身份验证,请签入redis。将会话保留在后端的位置并不是真正的问题。问题在于会话ID将如何与服务器通信。在基于浏览器的客户端中,答案通常是cookies,但是,除非您选择自己实现cookies,否则在android上可能没有该选项。通常,JSON Web令牌对于无cookie的客户端来说是一个不错的选择,但我不确定passport是否能与那些现成的客户端一起工作。你可能也想用这个。