【发布时间】:2019-12-16 16:57:40
【问题描述】:
我正在使用 AWS Cognito 对应用程序的用户进行身份验证。我想每小时自动刷新一次会话,而无需用户再次登录。我当前的解决方案是保存自上次登录以来的时间,并根据当前时间检查以确定何时从 amazon-cognito-identity-js 库调用 cognito 用户池 refreshSession 函数。
我的问题是这是否是最好的方法。节省登录时间是最佳做法吗?
登录后,cognito 用户会话 id 令牌有效负载具有以下属性:
auth_time: 1565305136
exp: 1565308736
iat: 1565305137
我找不到关于这些值代表什么或它们是否可用于检查当前会话到期时间的任何信息。 还有一个 cognitoUser.getSession.isValid 函数,它依赖于也可以工作的 Cognito 回调。我宁愿不使用这种方法,因为我需要在每个请求的标头中设置访问令牌,目前这是在 Angular 拦截器类中完成的。在每个请求中使用异步回调似乎是个坏主意,因为我们可以在将时间存储在本地存储之后自己检查时间。
另一个问题是是否有 Amplify 方法可以做到这一点。我的理解是,包含 CLI 功能的 Amplify 在后台也使用了 amazon-cognito-identity-js。但是,我们没有使用 Amplify。我们的实现基于演示Angular Cognito app here。
但是,可能有一种更新的方法可以做到这一点,例如,只需使用 Amplify 设置某种标志。
任何有助于阐明自动 Cognito 会话刷新的最佳实践的帮助将不胜感激。
【问题讨论】:
标签: angular amazon-web-services amazon-cognito