AWS Amplify用户随机注销

时间:2019-11-27 10:12:16

标签: javascript amazon-cognito aws-amplify amplifyjs

我正在使用AWS Amplify,但我的用户似乎总是随机注销。在开发过程中,我每天要注销几次。 我只是希望用户在一段时间(例如一个月)内保持登录状态。

这是我在页面刷新以获取用户属性时使用Amplify的方式:

      const session = await Auth.currentSession()

      this.context.commit('setToken', session.getAccessToken().getJwtToken())

      this.context.commit('setUser', await Auth.currentAuthenticatedUser())

这是在请求拦截器中的每个axios请求上完成的:

    const session = await Auth.currentSession()

    const token = session.getAccessToken().getJwtToken()

    config.headers.authorization = token

这个随机注销问题困扰了我一段时间,所以我甚至添加了刷新令牌的间隔。 AWS说,令牌被硬编码为在1小时后过期,并且可能完全在1小时标记上发出请求,这在服务器上到达的时间为时过晚,从而导致请求未经身份验证。

let cognitoKeepaliveInterval: any = null

function startCognitoKeepaliveInterval() {
  if (cognitoKeepaliveInterval) clearInterval(cognitoKeepaliveInterval)

  cognitoKeepaliveInterval = setInterval(async () => {
    const session = await Auth.currentSession()
    const user = await Auth.currentAuthenticatedUser()

    user.refreshSession(session.getRefreshToken(), () => {
      console.log('refreshed token')
    })
  }, 30 * 60 * 1000) // 30 minutes
}

我已经确认上述工作正常,使用新的exp时间戳更新了本地存储中的JWT。

但是问题仍然存在。如何确定我的用户没有注销?我只是希望他们在我决定的时间内保持登录状态。

0 个答案:

没有答案