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

Posted

技术标签:

【中文标题】在护照登录中 req.logIn() 后获取空数组【英文标题】:Getting empty Array after req.logIn() in passport login 【发布时间】:2015-08-05 07:01:41 【问题描述】:

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

让我告诉你我为存储数据提供了哪些详细信息。

如果是注册用户

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";

现在是访客用户

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.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);
);

【问题讨论】:

添加更多信息,例如如何显示设置以在框架上配置会话 【参考方案1】:

我找到了解决方案。我错了

我用var User = ; 替换了var User = [];,它成功了。

【讨论】:

以上是关于在护照登录中 req.logIn() 后获取空数组的主要内容,如果未能解决你的问题,请参考以下文章

使用护照注册后将代表用户的对象添加到数组中

Laravel 护照和 Vue 登录

使用 Passport 进行社交身份验证登录后如何重定向到个人资料页面? (角度,快递,护照,jwt)

不在护照快递服务器上保存会话

Google oauth 不返回电子邮件护照身份验证

使用 axios 获取数据后 React useEffect 返回空数组