【问题标题】:AWS Amplify user session doesn't expire in ReactJSAWS Amplify 用户会话在 ReactJS 中不会过期
【发布时间】:2019-07-09 18:39:52
【问题描述】:

我正在使用 ReactJS 创建一个无服务器网站,AWS Amplify 用于身份验证,AWS Cognito 用于用户池。

如果用户一个小时没有在网站上活动(或者如果他们关闭标签并且一个小时没有返回该网站),我正在尝试让该网站退出用户。但是,即使我第二天访问该网站,我的用户仍会继续登录。

我在 Amplify 的文档中读到 Amplify 会在令牌过期时自动刷新它,但我找不到禁用它的方法。

我将不胜感激这方面的任何帮助。我不确定如何解决这个问题。

谢谢。

【问题讨论】:

标签: reactjs amazon-web-services amazon-cognito aws-amplify


【解决方案1】:

根据 cognito 文档 ( https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html#amazon-cognito-user-pools-using-the-refresh-token)

默认情况下,刷新令牌会在您的应用用户登录到您的用户池后 30 天过期。为用户池创建应用时,您可以将应用的刷新令牌过期时间(以天为单位)设置为 1 到 3650 之间的任何值。

如果您没有更改默认值,则 Amplify 将能够刷新令牌 30 天。即使将其更改为最小值 1,Amplify 也将能够刷新 24 小时。

为了跟踪预期的会话到期时间,即使用户关闭浏览器,您也需要将该数据存储在数据库中。您可以使用 lambda 测试该值,然后根据响应在必要时使用 Auth.signOut()

【讨论】:

    【解决方案2】:

    现在似乎可以将刷新令牌设置为仅在 60 分钟后过期。 这可以在用户池->常规设置->应用程序客户端->在 Cognito 控制台中显示详细信息中进行设置。

    我认为这个变化是在 2020 年 8 月宣布的,根据这个帖子:https://aws.amazon.com/about-aws/whats-new/2020/08/amazon-cognito-user-pools-supports-customization-of-token-expiration/

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多