【问题标题】:AWS lambda serverless website session maintainingAWS lambda 无服务器网站会话维护
【发布时间】:2017-05-30 19:38:45
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    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】:

      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

      【讨论】:

      • 我很困惑的一件事是,如果您想使用匿名用户并在 oauth 流中存储一个“状态”字符串怎么办。 Cognito 是否为此矫枉过正?例如此处的步骤 2-4:jsapi.apiary.io/apis/starlingbankapi/reference/0/customer-api/…
      • @timhc22 在这种特殊情况下,我不认为 Cognito 是正确的选择。就个人而言,我会使用 localStorage 直到我需要对用户进行身份验证/注册。
      【解决方案3】:

      无论您使用 Cognito 还是您自己的会话管理方式,请注意 lambda 调用 share their runtime 并在它们之间共享静态状态。确保您的设计考虑到这一事实并相应地构建您的会话共享。

      https://www.linkedin.com/pulse/does-lambda-call-share-any-commonstate-santhosh-gandhe/

      【讨论】:

        猜你喜欢
        • 2019-05-13
        • 2023-03-08
        • 1970-01-01
        • 2012-03-05
        • 2020-04-20
        • 2023-04-09
        • 1970-01-01
        • 2019-05-29
        • 2015-12-20
        相关资源
        最近更新 更多