如何跟踪Stripe状态的Stormpath身份validation会话?

我目前在我的node.js应用程序中使用express-stormpath进行stormpath身份validation。 我也使用条纹。 我试图找出如何正确存储会话。 以下是我打算在用户会话中存储的内容:

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

所以在login时,我打算为用户创build一个会话,为期7天。 在每个API调用中,中间件都会检查是否到期。 如果有,或者没有到期date,则意味着我们需要将用户redirect到付款页面。 否则会认为一切正常,并付诸实施。

我应该以这种方式存储会话信息吗? 我不是超级会议pipe理经验。

我build议你做的是将这些信息存储在用户帐户的自定义数据存储中。 Stormpath中的每个帐户都允许您存储所需的任何JSON信息。

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

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

  • 收集用户的帐单信息。
  • 发送到Stripe使用他们的JS API,你会得到一个令牌。
  • 将令牌发送到您的快速应用程序。
  • 使用该标记创build一个条带客户对象。 这样你可以在将来给用户开账单。
  • 将条纹客户ID存储在Stormpath自定义数据中,这样您将知道如何为用户开票!

通过上述stream程,您可以在需要时自动为用户开帐单,而不是一直将其redirect到付款页面。 这也意味着您不必担心会话过期等,只需要将用户redirect到付款页面,如果他们的卡已过期或不再有效。

以下是如何在路线中执行此操作的方法:

 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); }); }); }); 

上面的代码将您的条纹客户ID保存在您的Stormpath帐户。

您随后可以通过以下方式检索这些数据:

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

希望有帮助=)