如何处理OAuth2令牌刷新反应原生?

时间:2016-12-20 13:14:34

标签: security oauth-2.0 react-native fetch

是否有用于处理令牌刷新的本机的本地库?或者我需要做一个刷新令牌的时间表?如果是,iOS允许在后台执行计划?或者我可以检查每个服务器响应,如果令牌有效,如果不刷新它?

实施此方法的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

当我遇到这个问题时,我想到了两种使用API​​处理令牌刷新的策略:

1 - 刷新API

中的特定错误

您的服务器应发送INVALID_TOKEN_ERROR时刻,您可以自行制作refreshToken(credentials)

我觉得有趣的一种技术是以与本文类似的方式填充fetchHandling Failed HTTP Responses With fetch()

2 - 在应用开始时刷新

我现在在我的应用上做的是在应用开始时刷新我的令牌,无论令牌的生存时间如何。因此,除非您的用户将应用程序打开的时间超过您的生存时间,否则您不应遇到任何问题。

我使用redux-persist加载状态回调挂钩app app。

refreshToken(凭证)

如果您使用fbsdk

,刷新令牌功能非常简单
import { AccessToken } from 'react-native-fbsdk'

[...]

AccessToken.refreshCurrentAccessTokenAsync()
    .then((FBTokenObject) => {
        let FBToken = FBTokenObject.accessToken
        [refresh your own API token using FBToken]
     )

如果您使用电子邮件和密码策略,则应查看react-native-keychain,以安全的方式将凭据保存在设备上。

结论

我没有在API错误上实现令牌刷新,因为我的令牌的生存时间是5天,我认为第二个策略目前还不够好。但如果我的令牌的生存时间短于2天,我肯定会这样做。

您还可以通过检查您的生活时间来改善效果,并根据价值决定是否要刷新令牌,但在我看来,这并不是一个好处。