You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Cognito用户无活动20分钟后登出方案有效性问询

方案可行性分析

你的方案无法实现用户无活动20分钟后自动登出的需求,核心问题出在Lambda的运行机制和触发器的定位上:

  • Post Authentication Lambda触发器仅在用户完成认证的单次事件中触发,执行完毕后即终止,无法长期驻留以监听后续的API调用。Lambda是事件驱动的无服务器函数,没有持续运行的能力,没法全程跟踪用户的活动状态。
  • 你无法在Lambda中实现“监听API调用”的逻辑——API调用的触发逻辑需要绑定到API网关的请求流程中(比如自定义授权器、请求前触发器),而不是依赖Post Auth这个一次性触发器。
  • 基于上述两点,你无法在Lambda中持续统计20分钟内的无API调用情况,自然无法触发RevokeToken操作。

可行的替代思路

要实现无活动自动登出,需要结合用户活动跟踪和令牌失效机制,常见的实现方式包括:

  1. 客户端主动跟踪+令牌刷新控制

    • 在客户端记录用户最后交互时间,当用户无活动超过20分钟时,主动丢弃本地令牌并调用RevokeToken。
    • 配合后端的令牌过期策略:将ID Token的有效期设为20分钟,且不使用Refresh Token(或限制Refresh Token的使用场景),这样无活动时令牌自然过期,无法再访问受保护资源。
  2. 后端存储用户活动时间+定时校验

    • 在每次用户调用API时,将用户ID和当前时间更新到分布式存储(如Redis)中。
    • 部署一个定时任务(如CloudWatch Events触发的Lambda),定期扫描存储中的用户活动记录,对超过20分钟无更新的用户调用RevokeToken,并清除对应的活动记录。
  3. API网关自定义授权器校验

    • 为API网关配置自定义Lambda授权器,每次API请求时,先校验用户令牌的有效性,同时检查该用户的最后活动时间(从存储中获取)。
    • 如果距离最后活动时间超过20分钟,直接返回未授权,并调用RevokeToken;反之则更新最后活动时间,允许请求通过。

内容的提问来源于stack exchange,提问作者i'i'i'i'i'i'i'i'i'i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:01:15