如何使用 Amazon Cognito sdk 实施*记住我*选项?

bla*_*iii 8 javascript authentication amazon-cognito angular

我正在尝试在 Angular2 项目中使用amazon-cognito-identity-js实现“记住我”选项以进行身份​​验证工作流程。问题参考

目前的认证流程

  1. 如果选中“记住我”选项,则保存令牌和 JWT 令牌(特别执行此操作,因为我需要一些其他用户信息,例如组和角色)以保存过期日期的 cookie。(例如:5 天)
  2. Auth Guard(即检查所有路由更改,即使是根路由)将首先检查令牌(不是 JWT)
  3. 如果 cookie 为空,则重定向到登录页面。
  4. 如果cookie存在则检查session(使用sdk的功能),session无效则重定向到登录页面。
  5. 如果会话有效,则更新 JWT(不是令牌)并且守卫返回 true。

我认为这看起来不错,但我遇到了一些意外的错误,不是经常发生,而是一旦 1 小时过去(实际会话已过期)。

问题

  1. 我也必须更新令牌吗?在step 5
  2. this.cognitoUtil.getCurrentUser();异步函数吗?
  3. cognitoUser.getSession()如果会话过期,将返回什么?
  4. 如果问题3返回session(无论有效还是无效), 的返回值是多少session.isValid()

age*_*420 4

  1. 是的。我的意思是我不知道令牌和 JWT 令牌是什么意思。就 Cognito 令牌而言,有 id、访问和刷新令牌。ID 和访问令牌将在一小时内过期,刷新令牌将在 30 天后过期(默认)。请参阅文档以供参考。
  2. 我不这么认为。我的意思是amazon-cognito-identity-js SDK 使用普通的 javascript SDK,并且getCurrentUser()只是从本地存储中检索用户。
  3. SDK 将自动尝试使用刷新令牌(默认有效期为 30 天)刷新 id/访问令牌。
  4. 返回布尔值。请参阅SDK 定义。