刷新令牌的API调用数量过多

时间:2019-09-25 23:04:31

标签: authentication jwt axios

在阅读了多个JWT刷新令牌教程之后,我仍然不清楚API调用流程应该如何工作。

这是我的理解:

1)客户端拥有访问令牌和刷新令牌。它将访问令牌提交到api/getCustomerData

2)假设访问令牌已过期。服务器以401响应。

3)客户端使用对401的刷新令牌来响应api/token请求。

4)由于刷新令牌仍然有效,因此服务器以新的访问令牌进行响应。

5)然后,客户端使用新的访问令牌向api/getCustomerData发出新请求。

我的印象是,这是过多的API调用,但是我没有看到任何教程可以阐明更有效地执行此操作的方法。从目前的情况来看,如果我遵循此模式,则每个API请求都将如下所示:

    const getCustomers = async () => {
    const config = {
        data: body,
        withCredentials: true,
        method: 'POST' as 'POST',
    }
    await axios(address + '/api/getCustomerData', config)
        .then((response) => {
            ...
        })
        .catch((error: any) => {
            const response = error.response;
            if (response) {
                if (response.status === 401) {
                    if (!failcount){
                       failcount++;
                       getCustomers();
                    }
                    else {
                       history.push('/login')
                    }
                }
            }
        })
    }

1 个答案:

答案 0 :(得分:0)

您可以做的是,使用令牌的“ exp(过期时间)”声明,在知道当前访问令牌即将到期之前,使用刷新令牌抢先获得新的访问令牌。这样至少会删除一个API调用-具有导致401的访问令牌的调用。