安全地跟踪Meteor中的页面视图

安全地跟踪Meteor中的页面视图,meteor,iron-router,pageviews,Meteor,Iron Router,Pageviews,我想做一个在流星网页浏览 问题是Meteor路由是客户端的,我似乎无法找到一种方法来计算每次查看页面的次数 我可以做一些简单的事情,比如每次有人访问某个页面时调用一个方法,但显然这并不安全。 一种选择是让它不安全,让它让某人每15分钟左右只能浏览一次页面,或者跟踪他们的用户id。跟踪用户id的问题是,似乎需要大量资源来存储每个被访问页面的每个人的id 如何安全地跟踪Meteor中的页面浏览量 “不安全”如中所示,容易被欺骗?只需在路由定义中使用Iron Router的on-beforeactio

我想做一个在流星网页浏览

问题是Meteor路由是客户端的,我似乎无法找到一种方法来计算每次查看页面的次数

我可以做一些简单的事情,比如每次有人访问某个页面时调用一个方法,但显然这并不安全。 一种选择是让它不安全,让它让某人每15分钟左右只能浏览一次页面,或者跟踪他们的用户id。跟踪用户id的问题是,似乎需要大量资源来存储每个被访问页面的每个人的id

如何安全地跟踪Meteor中的页面浏览量


“不安全”如中所示,容易被欺骗?只需在路由定义中使用Iron Router的
on-beforeaction

this.route('viewPage', {
  path: '/viewPage/:_id',
  onBeforeAction: function() {
    // Put your code for tracking pageviews here
  }
});
如果不先运行
onBeforeAction
函数,则无法查看页面;这就是为什么应用程序通常在这里检查用户是否已登录(如果已登录,请渲染路由;否则,请渲染登录页面)。见文件:


如果说“安全”是指加密,那么按照Meteor文档来实现用户帐户和HTTPS。

问题是,如果我将代码放在onBeforeAction(一些简单的Meteor.call())中,那么有人可能会找到该方法,然后重复调用该方法来扰乱我的页面视图。我的想法是,我想跟踪趋势页面和其他东西,Iron Router中的一个简单方法调用将允许某人轻松更改趋势。您在客户端放置的任何代码仍需要在服务器端验证;例如,如果“登录”检查未在服务器上验证,则该检查非常容易出错。您可以使用Meteor.call,如您所说,但在服务器端,在计算页面视图之前,请检查是否存在欺骗行为。例如,让呼叫向上发送页面ID和该用户的ID,并在服务器端检查该用户在过去一个小时(或任何时间)内查看的页面是否超过60页,以及是否已经查看了当前页面;然后才增加该页的计数器。