当前位置 : 主页 > 网页制作 > React >

reactjs – 在React Redux应用程序中使用OAuth2刷新令牌

来源:互联网 收集:自由互联 发布时间:2021-06-15
我有一个已实施OAuth2的应用.它工作正常,但我在这里与refresh_tokens混淆.我的应用程序正在使用React Redux组合. 我知道我需要检查我的access_token是否过期,然后使用refresh_token请求新的.好的…
我有一个已实施OAuth2的应用.它工作正常,但我在这里与refresh_tokens混淆.我的应用程序正在使用React Redux组合.

我知道我需要检查我的access_token是否过期,然后使用refresh_token请求新的.好的……但什么时候应该刷新它? 401发生之后或者当需要授权的某些API请求准备就绪时(发送前)?

我也知道如何使用HTTP拦截器在发送或检测401响应之前获取所有API请求.
问题是我很困惑如何解决Redux流程中的问题.如何“冻结”令牌刷新时间的请求?或者当我在401响应中解决问题时如何重复请求?

首次成功通过服务器验证时,我们将{access_token,expires_in,refresh_token}.我们将在 session storage中存储access_token和expires_in,在本地存储中存储refresh_token.

每当获取access_token以获取数据时(你应该使用fill_token填充来增强/包装fetch),你将检查expires_in是否即将到期(不到1分钟,或你感觉舒服),然后我们使用refresh_token请求新的的access_token.当然,我们还必须将新结果更新到存储.

伪代码:

function getToken() {
    const expiresIn = storage.getItem(KEY_EXPIRES_IN);
    const accessToken = storage.getItem(KEY_ACCESS_TOKEN);
    if (accessToken
        && (!expiresIn || moment.unix(Number(expiresIn)).diff(moment(),   'minute') > 1)) {
        return accessToken;
    }
    return refreshToken();
}

每次向服务器发出请求时,都会调用上面的函数.

P / S:您可能希望将其作为与isomorphic-fetch一起使用的承诺

网友评论