将 'referral cookie' 添加到护照以用于创建帐户

Add 'referral cookie' to passport to be used in account creation

我正在为我的 MEAN 应用构建合作伙伴计划。

这是我网站上的流程:

  1. 用户通过引荐访问我的网站 link。例如:http://example.com/ref/refname
  2. 已创建 key:value 为 ('ref':'refname') 的 cookie
  3. 用户被重定向到 /signup 页面(我在其中使用带有 twitch oauth 的护照)
  4. 我想在创建帐户之前提取 cookie 并将其添加到 passport.js 中的用户对象。

我怎样才能做到这一点?我正在使用 angular-fullstack 和 npm 模块 'cookies',可以在这里看到:https://www.npmjs.com/package/cookies

/home/ubuntu/workspace/node_modules/cookies/lib/cookies.js:44 header = this.request.headers["cookie"] ^

TypeError: Cannot read property 'headers' of undefined

这是我修改后的 passport.js...

var Cookies = require('cookies');

var cookies = new Cookies();

var referral = Cookies.get('ref');

我正在使用 ngCookies 在 angular 中设置 cookie,设置很好,我只是很难得到它所以我可以在创建之前将它添加到护照中的用户对象帐号。

感谢您的帮助!

我上周刚刚为 Complice 设置了这个。我只是使用会话系统,而不是直接处理 cookie。这是一些样板代码:

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);

// [other express/passport set-up stuff goes here]

app.use(session({
  secret: process.env.SESSION_STORE_SECRET,
  store: mongoStore,
  maxAge: new Date(Date.now() + 3600000),
  resave: false,
  saveUninitialized: false
}));

app.use(passport.session());

app.get('/ref/:refname', function (req, res) {
  req.session.ref = req.params.refname;
  res.redirect('/signup');
})

app.get('/signup', function (req, res) {
  res.locals.ref = req.session.ref // if you want to use it in the page or whatever
  // ... other stuff here
});

app.post('/signup', function (req, res) {
  var user = new User({
    // ...
    ref: req.session.ref
  })
  user.save(/* etc */)
});