如何跟踪具有条纹状态的风暴路径身份验证会话



我目前正在使用快速风暴路径在我的节点.js应用程序中使用风暴路径进行身份验证。我也在使用条纹。我正在尝试弄清楚如何正确存储会话。以下是我计划在用户会话中存储的内容:

session: {
  sp_user: { //stormpath user details }
  db_user: { //details from my DB }
  stripe_expiraton: '234253843923' // unix timestamp
}

因此,在登录时,我计划为用户创建一个有效期为 7 天的会话。在每次 API 调用时,快速中间件都会检查条带到期日期是否已到来。如果有,或者没有到期日期,这意味着我们需要将用户重定向到付款页面。否则会假设一切都正常并支付并继续。

我应该以这种方式存储会话信息吗?我在会话管理方面不是很有经验。

我建议您做的是将此信息存储在用户帐户的自定义数据存储中。风暴路径中的每个账户都允许您存储所需的任何 JSON 信息。

这将

是一个更好的解决方案,可以将数据存储在会话中,因为如果它只是客户端,它可能会随时被用户擦除。

另外:对于 Stripe,在大多数情况下存储时间戳并没有真正的意义。您通常采用的计费方式是:

  • 收集用户的帐单信息。
  • 使用他们的 JS API 将其发送到 Stripe,然后你会得到一个令牌。
  • 将令牌发送到您的快速应用。
  • 使用该令牌创建 Stripe 客户对象。这样,您将来可以向用户计费。
  • 将 Stripe 客户 ID 存储在您的 Stormpath 自定义数据中,这样您以后就知道如何向用户计费!

通过上述流程,您可以在需要时自动向用户计费,而不是一直将他们重定向到付款页面。这也意味着您无需担心会话过期等,只需在用户的卡过期或不再有效时将用户重定向到付款页面。

以下是在路由内执行此操作的方法:

app.post('/blah', stormpath.loginRequired, function(req, res, next) {
  req.user.getCustomData(function(err, data) {
    if (err) return next(err);
    data.stripeCustomerId: 'xxx'
    data.save(function(err) {
      if (err) return next(err);
    });
  });
});

上面的代码会将您的 Stripe 客户 ID 保存在您的 Stormpath 账户中。

然后,您可以随时通过说以下内容来检索此数据:

req.user.getCustomData(function(err, data) {
  if (err) return next(err);
  data.stripeCustomerId; // this will be the value you've previously stored
});

希望有帮助=(

最新更新