【问题标题】:How to implement *Remember me* option using Amazon Cognito sdk?如何使用 Amazon Cognito sdk 实施 *Remember me* 选项?
【发布时间】:2018-04-14 11:14:41
【问题描述】:

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

当前身份验证流程

  1. 如果 记住我 选项被选中,则将令牌和 JWT 令牌(特别是这样做,因为我需要一些其他用户信息,例如组和角色)保存到带有过期日期的 cookie。 (例如:5 天)
  2. 身份验证保护(即检查所有路由更改,即使是根路由)将首先检查令牌(不是 JWT)
  3. 如果 cookie 为空,则重定向到登录页面。
  4. 如果cookie存在则检查会话(使用sdk的功能),会话无效然后重定向到登录页面。
  5. 如果会话有效,则更新 JWT(不是令牌)并且保护返回 true。

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

问题

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

【问题讨论】:

    标签: javascript angular authentication amazon-cognito


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

    【讨论】:

    • 感谢您的详细解答!
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 不是MFA的特定解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多