如何在帆中存储最近访问过的页面/路线?

时间:2014-09-08 10:28:15

标签: sails.js

需要在应用程序中存储最近访问过的页面列表,例如Windows中最近打开的文件列表。对此最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

这取决于很多方面,特别是如果您的应用程序具有基于用户的系统。

如果您的应用具有用户帐户的概念:

对于您的User模型,请添加额外的属性recentPages: {type: 'ARRAY', defaultsTo: [] }。无论您在何处处理用户的登录会话,都应将req.session.user设置为当前用户的实例。

然后在/api/policies文件夹中创建全局政策 trackUsers.js

module.exports = function(req, res, next) {
  if (req.session.user) {
    req.session.user.recentPages.append(req.url);
    req.session.user.save(function (err) {
      return next();
    });
  } else {
    return next();
  }
};

如果您想访问用户的近期网页,只需从user.recentPages抓取即可。您可以通过快速检查政策和删除元素来限制添加的页数;还有Waterline ORM验证了名为 maxLength 的模型。


如果您的应用没有,那么您可以通过IP地址进行跟踪。这是风险较大但我能想到的唯一解决方法(由于共享IP,动态IP会导致此功能不准确)。

您将在User中创建一个名为/api/models的新模型,该模型具有属性ipAddress: { type: 'STRING', ip: true, primary: true }和另一个属性recentPages: {type: 'ARRAY', defaultsTo: [] }

然后在/api/policies文件夹中创建全局政策 trackUsers.js

module.exports = function(req, res, next) {
  User.find(req.ip, function foundUser (err, user) {
    if (!err && user) {
      user.recentPages.append(req.url);
      user.save(function (err) {
        return next();
      });
    } else {
      return next();
    }
  });
};

您可以通过使用您在客户端获取的IP在User模型上查找来访问IP地址的最新页面。无论您使用哪种方法,都要确保将政策添加到config/policies.js'*': ['trackUsers']