在React / Redux中设置计时器以发送刷新身份验证令牌的最佳方法

时间:2018-02-19 06:49:38

标签: javascript reactjs express redux jwt

我使用access refresh jwt身份验证流程,并希望客户端在收到访问令牌后每隔10分钟发送一个刷新令牌以获取新的访问令牌。我还想确保如果用户关闭他们的笔记本电脑一小时并返回它,还会发送新的访问令牌请求。在React / redux中实现此行为的最佳方法是什么,其中用户将始终拥有有效的访问令牌并无缝地保持他们的"会话"去?

1 个答案:

答案 0 :(得分:3)

要实现这一点,您可以在每次请求之前有条件地检查令牌的到期,而不是设置计时器。

这将取决于您与服务器通信的方式,但想法是存储客户端jwt令牌,他的到期和刷新令牌(如果需要他也过期)然后在每个请求之前使用某种中间件需要认证:

const authClientMiddleware = (done) => {
    if (new Date(localStorage.getItem('expiration')) <= new Date()) {
        getNewToken(localStorage.getItem('refreshToken')).then(() => done()).catch(() => logout());
    } else {
        done();
    }
}