获取护照登录中req.logIn()后的空数组

Getting empty Array after req.logIn() in passport login

本文关键字:数组 logIn 登录 req 获取      更新时间:2023-09-26

我正面临一种奇怪的行为,我试图使两种类型的登录,一个密码和其他是作为客人。在用户使用密码登录的情况下,Passport req.logIn()工作正常。但是当我通过guest登录时,它在会话中设置空数组。

让我向您展示我为存储数据提供的详细信息。

注册用户

var User = [];
User['email'] = "email@domain.com";
User['id_customer'] = "1";
User['id_user'] = "1";
User['other_info'] = "xyz";
User['other_info'] = "xyz";
User['other_info'] = "xyz";
User['other_info'] = "xyz";

现在在Guest User

的情况下
var User = [];
User['email'] = "email@domain.com";
User['id_guest'] = "1";
User['other_info'] = "xyz";

护照登录,即req.logIn()

req.logIn(user, function(err) {
            if (err) {
                if(err instanceof Error) {
                    sails.log.debug(err.stack);
                } else
                {
                    sails.log.debug(err);
                }
                res.redirect('index/error');
            }

            if (req.xhr) {
              return res.send({
                "success": 1,
                "message": info.message,
                "user": user
              });
            } else {
                res.redirect('/');
            }
          });

我无法调试为什么passport没有以正确的方式序列化我的Guest用户信息。序列化。

是否有约束?

让我向您展示我的序列化和反序列化方法。

passport.serializeUser(function(user, done) {
  //  saving Complete User Object in session CouchBase instead of saving
  done(null, user);
});
passport.deserializeUser(function(user, done) {
  //  Getting complete User Object from Couchbase as placed in req for each request
  done(null, user);
});

我找到了解决方案。我犯了一个错误

我用var User = {};代替var User = [];,它工作了。