我目前正在使用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中间件将检查条带到期日期是否已到达。如果有,或者没有过期日期,则意味着我们需要将用户重定向到付款页面。否则将假设一切正常并付清并继续。
我应该以这种方式存储会话信息吗?我对会话管理没有超级经验。
答案 0 :(得分:1)
我建议您将此信息存储在用户帐户的自定义数据存储中。 Stormpath中的每个帐户都允许您存储所需的任何JSON信息。
这将是一个更好的解决方案,可以将您的数据存储在会话中,因为如果它只是客户端,它可能随时被用户擦除。
另外:对于Stripe,在大多数情况下存储时间戳确实没有意义。您通常进行结算的方式是:
通过上述流程,您可以在需要时自动向用户收费,而不是始终将其重定向到付款页面。这也意味着您不必担心会话过期等,只需要将用户重定向到付款页面,如果他们的卡已过期或不再有效。
这里是如何在路线内完成的:
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
});
希望有帮助=)