Sailsjs:为所有网站访问者设置一个cookie

时间:2017-03-17 17:10:27

标签: cookies sails.js ejs

我有一个基于sailsjs的网站。我正在寻找对整个网站使用的CTA进行A / B测试....并认为实现这一目标的最简单方法是将1或0写入cookie。用户1获得CTA版本A;用户2获得版本B.非常简单。

我遇到问题的地方是为所有用户编写cookie - 无论他们首先登陆哪个页面。我看到如何从控制器轻松地执行此操作,但这只会为访问该特定页面的用户编写cookie ...而且我不想在站点上的每个控制器中复制此代码。

对于我如何努力实现这一目标,是否有人对正确的方法有任何建议?

感谢。

1 个答案:

答案 0 :(得分:0)

在Sails中有几种​​方法可以做到这一点。您经常会在policy中看到类似的内容,但最佳做法是使用纯粹用于访问控制的策略。另一种方法是使用custom middleware,但这对你的案子来说可能有些过分。我推荐一个custom hook,它很容易配置(并在不同的应用中重复使用):

// api/hooks/add-cookie.js
module.exports = function addCookie(sails) {

  return {

    // Add some routes to the app.
    routes: {

      // Add these routes _before_ anything defined in `config/routes.js`.
      before: {

        // Add a route that will match everything (using skipAssets to...skip assets!)
        '/*': {
          fn: function(req, res, next) {

            // Set the cookie.
            res.cookie('myCookie', 123);

            // Continue with the request.
            return next();

          },
          skipAssets: true
        }
      }
    }
  };
};