在对后端的每次调用之前,我都使用Auth.currentAuthenticatedUser()来获取idToken.jwtToken并将其在请求的标头中传递给后端服务器以获取数据。在我的用例中,使用Auth.currentSession()而不是Auth.currentAuthenticatedUser()有什么区别吗?令牌过期后,Auth.currentAuthenticatedUser()是否会刷新令牌,类似于Auth.currentSession()?
答案 0 :(得分:0)
关于放大auth的文档仍然很贫乏,因此我研究了@aws-amplify/auth
和amazon-cognito-identity-js
软件包的源代码,这些是调查结果:
currentAuthenticatedUser
将尝试从localstorage检索经过身份验证的用户信息(除非您的存储选项没有另外配置)。如果存储中不存在该会话,它将进行api调用以检索用户信息,这涉及在此过程中自动刷新用户会话。currentSession
将不检查本地存储,并始终调用api调用,该调用还涉及在过期时自动刷新用户会话。因此,要直接回答您的问题,Auth.currentAuthenticatedUser()
方法并不总是为您提供有效的令牌。如果您的存储中包含过期的令牌,它将返回该令牌。这将需要您在返回的用户对象上调用user.getSession()
,以手动请求新的会话/令牌。我建议您使用Auth.currentSession()
,因为这会自动处理令牌刷新并始终返回有效令牌。