如何自动刷新页面中的Cognito令牌

时间:2019-03-11 00:49:38

标签: angular amazon-cognito aws-amplify

我使用AWS Cognito服务进行身份验证。在我的Angular 7应用中,我使用Amplify Auth来保护我的页面。

如果用户在不同页面之间导航,则Amplify将自动处理令牌刷新,并且他们将看不到令牌到期。

如果用户长时间停留在一页中,则令牌将不会刷新,最终用户将看到过期的令牌,并将获得403的Web服务调用。

如果用户长时间在同一页面上,刷新访问/ ID令牌的任何好的解决方案?

2 个答案:

答案 0 :(得分:0)

Amplify authentication documentation: retrieve current session中,他们展示了如何使用Auth.currentSession()进行操作,这将返回一个Promise并在过期时刷新令牌。 在Auth.currentSession()。then()块中返回的数据中,您获得一个CognitoUserSession对象,该对象的id和exp密钥位于idToken.payload下,这些键可用于确定idToken何时到期或已到期。您可以在身份验证服务中使用这些令牌,以在需要时刷新令牌。

答案 1 :(得分:0)

大概有两种方式:

  1. 使用Auth.currentSession()获取当前有效的令牌,如果当前已过期,则获取新令牌。 Amplify会处理
  2. 作为后备,使用一些间隔作业每x分钟(可能是10分钟)按需刷新令牌。当您需要长时间运行(例如,上传非常大的视频,而这将需要一个多小时(可能是由于网络速度较慢)),然后令牌在上传过程中过期,并且放大功能不会为您自动更新时,这是必需的。在这种情况下,此策略将起作用。不断更新令牌。 在文档中没有提到如何按需刷新,所以在这里。
widget1

更多信息:https://github.com/aws-amplify/amplify-js/issues/2560