用户登录我的应用程序后,他们从服务器收到Set-Cookie响应,该响应将auth和刷新令牌保存在cookie中。效果很好。
用户登录并从服务器接收成功的登录响应(包括Set-Cookie的响应)后,他们将被重定向到应用程序的仪表板。
仪表板页面包含一个函数(使用next.js在getInitialProps中),用于验证用户已登录。为此,它将检查用户的cookie中是否有auth令牌,并与服务器进行验证。
我遇到的问题是,从服务器收到成功的登录响应后,在设置cookie之前,用户将被重定向到仪表板。这意味着在保存cookie之前,当getInitialProps到达仪表板时,调用该用户时,该用户将被视为未经身份验证。
在重定向用户之前,有什么方法可以等到cookie实际保存之前?
我知道我可以简单地使用setTimeout在重定向之前等待几秒钟,但这感觉很混乱并且不是最佳的。我无法使用本地存储来保存令牌,因为getInitialProps由于只允许服务器端呈现而无法与本地存储一起使用。
这是相关的代码。我需要将redirect()方法延迟到设置cookie之前。
await signIn({ variables: { login, password } })
.then(data => {
client.cache.reset()
.then(() => {
redirect({}, '/')
})
})