javascript - req.session获取不到
黄舟
黄舟 2017-04-11 12:22:40
[JavaScript讨论组]

我又来了...我想在获取到Access_token后把它保存在session中;下面这一步是获取到了。

router.route("/fanfou").get(function(req,res){ 
    res.render("fanfou",{title:'fanfou'});
}).post(function(req,res){                        
    var username = req.body.username;  
    var password= req.body.password;
    oa.getXAuthAccessToken(username, password, function (error, oauth_token, oauth_token_secret, results) {
      if (error)
        console.log(error);
      else
      {
        req.session.oauth_token = oauth_token;
        req.session.oauth_token_secret = oauth_token_secret;
        var options={
          url:'http://api.fanfou.com/statuses/home_timeline.json',
          oauth_token:req.session.oauth_token,
          oauth_token_secret:req.session.oauth_token_secret
        }
        oa.get(options,function(error,data){
            if(error)
            {
              res.json({
                error:error
              }); 
            }
            else{
              res.json({
                result:data,
                auth_token:req.session.oauth_token
              }); 
            }
        }); 
      }  
    });     
});

但是到了这一步又获取不到了。不知道哪里出了问题,还请大神指教

router.route("/fanfouget").get(function(req,res){ 
    res.render("fanfouget",{title:'fanfouget'});
}).post(function(req,res){  
     console.log('req.session.oauth_token'+req.session.oauth_token)                      
    var options={
      url:'http://api.fanfou.com/favorites/id.json',
      oauth_token:req.session.oauth_token,
      oauth_token_secret:req.session.oauth_token_secret
    }
    oa.get(options,function(error,data){
       if(error)
       {
         res.json({
           error:error
         }); 
         console.log(error);
       }
       else{
         res.json({
           result:data
         }); 
         console.log(data);
       }
   });    
});

而且我在app.js添加这段代码检测req.session ,一直检测不到。

app.use('/',function(req,res){
  res.send('检测token');
  if(req.session.oauth_token){
      console.log('token存在');
  }else{
    req.session.oauth_token=11112;
    console.log(req.session.oauth_token);
  }
})
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
大家讲道理

req.session 依赖中间件,expresjs 默认没有提供这个对象

如果确认已经加载 session 中间件,可用通过环境变量开启 session 的 debug 日志。

DEBUG=express-session node app.js

node app.js 只是一个启动示意

怪我咯

谢谢邀请,不过后端我一直在用 .NET,对 Express 了解有限。

不过既然 express 的 session 需要中间件支持,建议你检查一下 session 的实现方式有没有问题,比如说是内存实现、服务器实现还是数据库实现,各种实现在存取方面是否存在问题。

大家讲道理

泻药。

你这个问题描述的太模糊,而且给的信息太少,很难判断。 我只能分析下了。

首先可以明确你的中间件起作用了,要不你拿不到req.session。

然后,我发现,你的第一步,不是取值,是给req.session 添加了一个key值。这个key值应该是存到内存里面的,然后下次访问的时候可以拿到。

你的问题是没有拿到,这个时候,会不会,在两次中间,node重启了,如果重启,内存里面的数据就丢失了,自然是拿不到的。

如果还无法排除,你可以使用 node-inspector 调试一下,看看哪里出问题了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号