Node.js 如何使用passport.js维护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

我使用passport.js来维护web应用程序的会话和API身份验证,它工作得很好。现在我想将我的API用作android应用程序的web服务。我的问题是,我的代码将适用于web服务,因为我必须维护与移动设备的会话。我正在使用下面的代码

   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是否能与那些现成的客户端一起工作。你可能也想用这个。