如何使用Stripe状态跟踪Stormpath身份验证会话?

时间:2016-02-10 14:44:45

标签: node.js session express stripe-payments

我目前正在使用express-stormpath在我的node.js应用程序中使用stormpath进行身份验证。我也使用条纹。我试图弄清楚如何正确存储会话。这是我打算在用户会话中存储的内容:

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

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

我应该以这种方式存储会话信息吗?我对会话管理没有超级经验。

1 个答案:

答案 0 :(得分:1)

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

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

另外:对于Stripe,在大多数情况下存储时间戳确实没有意义。您通常进行结算的方式是:

  • 收集用户的结算信息。
  • 使用他们的JS API将其发送给Stripe,然后您将获得一个令牌。
  • 将令牌发送到您的Express应用程序。
  • 使用该令牌创建条带客户对象。这样,您可以在将来向用户收费。
  • 将Stipe客户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
});

希望有帮助=)

相关问题