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

时间:2017-11-02 02:35:17

标签: javascript angular authentication amazon-cognito

我正在尝试使用Angular2项目中的 amazon-cognito-identity-js 为身份验证工作流实现记住我选项。 Issue reference

当前身份验证流程

  1. 如果选中记住我选项,则将令牌和JWT令牌(特别是这样做,因为我需要一些其他用户信息,例如组和角色)来保存到期日期的cookie。 (例如:5天)
  2. Auth guard(即检查所有路由更改,即使是根路由)也会先检查令牌(而不是JWT)
  3. 如果cookie为空,则重定向到“登录”页面。
  4. 如果cookie存在,则检查会话(使用sdk的功能),会话无效,然后重定向到登录页面。
  5. 如果会话有效,则更新JWT(不是令牌),后卫返回true。
  6. 我认为这似乎很好,但我收到了一些意想不到的错误,但不是经常发生,而是经过1小时(实际会话已过期)。

    问题

    1. 我是否还需要更新令牌? step 5
    2. this.cognitoUtil.getCurrentUser();异步功能吗?
    3. 如果会话过期,将从cognitoUser.getSession()返回什么内容?
    4. 如果 Ques 3 返回会话(即使它有效或无效),session.isValid()的返回值是多少?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

Cognito提供用于记住用户登录设备的配置。

您可以在用户池设置的“设备”菜单下找到此配置。

remember me setup cognito

问题“您想记住用户的设备吗?”基本上提供了三个选项。

  1. 始终-Cognito始终会记住设备。
  2. 用户选择加入-取决于用户的选择。
  3. 否-从不跟踪设备。

有关更多详细信息,请访问此链接-在这里您将找到相同的实现。 https://aws.amazon.com/blogs/mobile/tracking-and-remembering-devices-using-amazon-cognito-your-user-pools/