Auth.currentAuthenticatedUser()和Auth.currentSession()有什么区别?

时间:2019-04-18 05:52:27

标签: aws-amplify

在对后端的每次调用之前,我都使用Auth.currentAuthenticatedUser()来获取idToken.jwtToken并将其在请求的标头中传递给后端服务器以获取数据。在我的用例中,使用Auth.currentSession()而不是Auth.currentAuthenticatedUser()有什么区别吗?令牌过期后,Auth.currentAuthenticatedUser()是否会刷新令牌,类似于Auth.currentSession()?

1 个答案:

答案 0 :(得分:0)

关于放大auth的文档仍然很贫乏,因此我研究了@aws-amplify/authamazon-cognito-identity-js软件包的源代码,这些是调查结果:

  • currentAuthenticatedUser将尝试从localstorage检索经过身份验证的用户信息(除非您的存储选项没有另外配置)。如果存储中不存在该会话,它将进行api调用以检索用户信息,这涉及在此过程中自动刷新用户会话。
  • currentSession将不检查本地存储,并始终调用api调用,该调用还涉及在过期时自动刷新用户会话。

因此,要直接回答您的问题,Auth.currentAuthenticatedUser()方法并不总是为您提供有效的令牌。如果您的存储中包含过期的令牌,它将返回该令牌。这将需要您在返回的用户对象上调用user.getSession(),以手动请求新的会话/令牌。我建议您使用Auth.currentSession(),因为这会自动处理令牌刷新并始终返回有效令牌。