AWS lambda无服务器网站会话维护

时间:2017-01-16 01:46:31

标签: node.js amazon-web-services session lambda

我开发了一个使用node.js作为后端的网站。 最近我试图使它无服务器并部署到lambda。 我将重新编写我的大部分代码,但是在用户登录后我们还没弄清楚如何维护会话。我正在使用" express-session"模块和会话数据都记录在数据库中。

说实话,我对会话没有很深的理解。 我在谷歌搜索,但没有找到我需要的东西。 有没有人在使用lambda维护会话时有一些示例代码? 或任何资源。非常感谢!

3 个答案:

答案 0 :(得分:3)

  

HTTP中有多种机制可用于维护会话   Web应用程序中的状态,例如cookie(标准HTTP标头),   URL参数,GET请求的URL参数,POST上的主体参数   请求,例如隐藏表单字段(HTML表单)或专有HTTP   头。

     

来源:Session Management Cheat Sheet

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/