如何计算有多少未经授权的用户在Node Js中打开特定网址?

时间:2012-11-02 10:14:24

标签: javascript node.js mongodb mongoose express

我正在使用ExpressJs和MongoDB。我想显示有多少未授权的唯一身份用户已打开特定的活动页面。
我该如何实现这个请求计数器?
检查IP地址或在cookie中添加一些标记......

1 个答案:

答案 0 :(得分:3)

您可以使用cookie并执行以下操作:

app.use(express.cookieParser());
app.use(function(req, res, next) {
  req.cookies['track_id'] ||= require('connect').utils.uid(32);
  next();
});

现在你可以在每个网站上只推送cookie的id:

app.use(function(req, res, next) {
  if(!req.isAuthenticated()){
    statistics.findAndModify(
      {_id: req.url},
      {},
      {$addToSet: {ids: req.cookies['track_id']}},
      {upsert:true}
    );
  }
  next();
});

然后你可以在你的mongodb数据库中查询。如果您为ids字段编制索引,则可以查询一个ID,并查看他们访问的网址。访问者数量是阵列的长度。

如果您将$addToSet替换为$push,您还会两次跟踪网站上的人。

当然,当人们删除他们的饼干时,一切都会崩溃^^

请注意,这是未经测试的,我只是在我去的时候写下来。我还假设您使用了普通node-mongodb-native,数据库查询可能因您而异。 Redis也是一个很好的解决方案。