aws-amplify Auth.currentSession() 一小时后未提供刷新的令牌

gha*_*lik 8 javascript aws-amplify

您的问题与哪个类别有关?

AWS 放大自动处理刷新令牌

您正在使用哪些 AWS 服务?

aws-放大

提供其他详细信息,例如代码片段

axios.interceptors.request.use(function(config) 
{ return Auth.currentSession() .then(session => { // User is logged in. 

  Set auth header on all requests 
  let accessToken = session.idToken.jwtToken; 

  axios.defaults.headers.common["Authorization"] = accessToken; 
  return Promise.resolve(config); })
   .catch(() => { 
  // No logged-in user: don't set auth header 
  return Promise.resolve(config); 
}); 
});
Run Code Online (Sandbox Code Playgroud)

这是我现在使用的拦截器请求,无论总时间如何,都可以获取最新的有效令牌,因为用户以 #446 身份登录,并且 aws-amplify 文档告诉它会在内部自动刷新令牌并Auth.currentSession()为您提供最新的有效令牌jwtToken 每次。

但我的经验是:我登录:Auth.currentSession()不断给我登录时收到的 jwtToken。一个小时后,令牌已过期,并且Auth.currentSession()仍在提供之前已过期的令牌,这导致我的服务器向我发送 401。我该如何处理?如何不断获取最新的有效刷新 jwtToken?是我用错了还是bug?

Gur*_*dhu 0

这个答案对您来说可能为时已晚,但如果其他人偶然发现了这个线程,您可能正在使用“令牌”作为您的授权授予流程。请改用“代码”。不要忘记在 Cognito 控制台中也进行更改。选择授权码授予而不是隐式授予