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

Pur*_*nda 3 javascript express jwt reactjs redux

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

Dyo*_*Dyo 7

为此,您可以在每次请求之前有条件地检查令牌的到期时间,而不是设置计时器。

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

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