登录后将用户重定向到首页

时间:2018-11-13 16:23:27

标签: node.js amazon-web-services aws-lambda aws-api-gateway amazon-cognito

我正在创建一个Web门户。显示Web门户主页的JavaScript是敏感的,必须仅向经过身份验证的用户显示。

我目前有两个HTML文件:login.html和homepage.html

当有人通过portal.com/homepage导航到我的应用程序时,它会将用户重定向到portal.com/login

为了引起重定向,我使用了lambda。

用户登录后,我希望将其重定向到portal.com/homepage。

但是,在通过API网关将当前标头传递给lambda的情况下,我无法对用户进行身份验证,因此无法知道用户是否已登录。

我想知道如何将用户重定向到主页,并将会话信息转发到lambda,以便我的lambda可以对用户进行身份验证并返回html,而不是重定向到登录页面。

使用客户端JavaScript调用API只会将html文件返回给调用它的变量,而不是在新页面中打开它。

下面是我的lambda:

  exports.login = (event, context, callback) => {

  const poolId = ** value that tells me a user is authenticated **

  let contents = ""
  let result = {}

  if (poolId) {
    result = {
      statusCode:302,
      headers: {
        poolId,
        "Location": "https://portal.com/homepage"
      },
    }
  } else {
    contents = fs.readFileSync(`app/login.html`);
    result = {
      statusCode: 200,
      body: contents.toString(),
      headers: {'content-type': 'text/html'}
    };
  }

  callback(null, result);
};

exports.hoempage = (event, context, callback) => {

  const poolId = ** value that tells me my user is authenticated**

  let result = {}
  let contents = ""
  if (poolId) {

    contents = fs.readFileSync(`app/homepage.html`);

    result = {
      statusCode: 200,
      body: JSON.stringify([event, context]),
      headers: {'content-type': 'text/html'}
    }

  } else {
    result = {
      statusCode:302,
      headers: {
        "Location": "https://portal.com/login"
      }
    }

  }

  callback(null, result)
}

提前谢谢

1 个答案:

答案 0 :(得分:1)

在后端,您可以向您发送jwt tocken,如果会话已过期,请验证tocken,将用户重定向到登录页面,否则让他在系统中徘徊。 请参阅以下是令牌验证机制。

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html

相关问题