我开发了一个使用node.js作为后端的网站。 最近我试图使它无服务器并部署到lambda。 我将重新编写我的大部分代码,但是在用户登录后我们还没弄清楚如何维护会话。我正在使用" express-session"模块和会话数据都记录在数据库中。
说实话,我对会话没有很深的理解。 我在谷歌搜索,但没有找到我需要的东西。 有没有人在使用lambda维护会话时有一些示例代码? 或任何资源。非常感谢!
答案 0 :(得分:3)
HTTP中有多种机制可用于维护会话 Web应用程序中的状态,例如cookie(标准HTTP标头), URL参数,GET请求的URL参数,POST上的主体参数 请求,例如隐藏表单字段(HTML表单)或专有HTTP 头。
AWS Lambda与会话管理无关,除非您想重新发明轮子并编写存储/检索数据库中的会话变量的Lambda函数,在这种情况下我建议您使用Amazon Cognito用于会话管理。请参阅Amazon Cognito Identity SDK for JavaScript。
答案 1 :(得分:2)
在Amazon Cognito Identity SDK for Javascript中,特别检查用例16,它显示了如何检索Cognito当前用户。您可以使用此功能从页面传递当前用户属性。
var poolData = {
UserPoolId : '...', // Your user pool id here
ClientId : '...' // Your client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession(function(err, session) {
if (err) {
alert(err);
return;
}
console.log('session validity: ' + session.isValid());
// other AWS actions ...
});
}
答案 2 :(得分:0)
无论您使用 Cognito 还是您自己的会话管理方式,请注意 lambda 调用 share their runtime 并在它们之间共享静态状态。确保您的设计考虑到这一事实,并相应地构建您的会话共享。
https://www.linkedin.com/pulse/does-lambda-call-share-any-commonstate-santhosh-gandhe/