树叶的挽留 2016-08-30 07:11 采纳率: 0%
浏览 882

express在做网站开发的时候造成用户的数据混乱,该如何处理?

我在做一个微信的分享功能,要求分享的时候需要带上分享者的ID,然后我通过前台的脚本,在当前用户执行分享动作的时候,把ID也带上,传到后台,因为微信在获取用户信息的时候,会有一个跳转到回调地址的过程,比如我当前请求的地址是http://www.wit-orange.com?app=ballgame&shareOpenid=xxxx,在调用微信的获取用户信息接口的时候,回有一个重定向到http://www.wit-orange.com 的动作,这个时候,我后台获取shareOpenid的代码如下:

    router.get('/', function(req, res, next) {
          if (req.query.app !== undefined) {
              console.log(123);
              global.appflag = req.query.app;
              if (req.query.shareOpenid !== undefined) {
                  var shareOpenid = req.query.shareOpenid;
              } else {
                  var shareOpenid = undefined;
              }
              if (req.query.bymp !== undefined) {
                  var bymp = req.query.bymp;
              } else {
                  var bymp = undefined;
              }
          }
          console.log("appflag:"+global.appflag);
          console.log("shareOpenid:"+shareOpenid);
          console.log("bymp:"+bymp);
    });

我发现在完成跳转到回调地址之后,获取到的shareOpenid为undefined, 尝试着把shareOpenid定义在路由的外面,这样可以成功的获取到shareOpenid的值,但是问题来了,当我有两个用户同时访问这个路由的时候,shareOpenid的值就出现的混乱情况,我看了一下,原因应该是在路由器外面定义的变量,在每个路由中都可以访问到,当A用户在访问的同时,B用户也在访问的时候,A用户访问到了B用户带过来的shareOpenid的值,于是 A用户就获取到了B用户的信息,造成了信息的混乱。
对于这样的情况,express是怎么处理的,是否有大神遇到过这样的问题,又是怎么处理这个问题的?

我尝试着使用nodejs的全局变量global来存储我的变量,但是这样的话,shareOpenid就没法根据不同用户带过来的值实时的改变了,这样也不符合当前的需求。

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2017-02-08 20:38
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)