我正在使用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。
但是问题仍然存在。如何确定我的用户没有注销?我只是希望他们在我决定的时间内保持登录状态。