Nic*_*kon 5 oauth-2.0 reactjs redux-framework redux
我有一个已OAuth2实施的应用程序.它工作正常,但我在refresh_tokens这里很困惑.我的应用正在使用React+ Redux组合.
我知道我需要检查我是否access_token已过期,然后要求使用新的refresh_token.好的......但什么时候应该刷新它?在之后401发生或时一些API需要授权请求已准备好(之前发送)?
我也知道如何使用HTTP拦截器API在发送或检测401响应之前获取所有请求.问题是我很困惑如何解决Redux流程中的问题.如何"冻结"令牌刷新时间的请求?或者当我在401响应中解决问题时如何重复请求?
小智 6
首次成功通过服务器验证时,我们将{access_token,expires_in,refresh_token}.我们将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();
}
Run Code Online (Sandbox Code Playgroud)
每次向服务器发出请求时,都会调用上面的函数.
P/S:您可能希望将其作为与isomorphic-fetch一起使用的承诺
| 归档时间: |
|
| 查看次数: |
1776 次 |
| 最近记录: |