如何在运行下一个功能之前等待cookie被设置?

时间:2019-03-23 07:11:38

标签: javascript reactjs cookies apollo next.js

用户登录我的应用程序后,他们从服务器收到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({}, '/')
            })
    })

0 个答案:

没有答案