React native 关于React本机应用中访问令牌到期的注销问题

React native 关于React本机应用中访问令牌到期的注销问题,react-native,oauth-2.0,React Native,Oauth 2.0,我正在开发一个带有PHP后端的react本机应用程序。我对你有意见。以下是场景 用户进入登录屏幕,他将获得一个访问令牌。那是 保存在异步存储中 只要成功识别用户,身份验证服务提供商就会发出access\u令牌和refresh\u令牌 应用程序使用访问令牌获取更多用户信息 访问令牌已过期。然后,我进入应用程序并提前关闭(这将发送一个新访问令牌的请求,但在关闭应用程序时,响应将不会存储在设备中,而是更新后端刷新令牌)。这会导致刷新令牌不匹配并导致应用程序注销 当我试图打开应用程序时,我被抛出

我正在开发一个带有PHP后端的react本机应用程序。我对你有意见。以下是场景

  • 用户进入登录屏幕,他将获得一个访问令牌。那是 保存在异步存储中

  • 只要成功识别用户,身份验证服务提供商就会发出
    access\u令牌
    refresh\u令牌

  • 应用程序使用访问令牌获取更多用户信息

  • 访问令牌已过期。然后,我进入应用程序并提前关闭(这将发送一个新访问令牌的请求,但在关闭应用程序时,响应将不会存储在设备中,而是更新后端刷新令牌)。这会导致刷新令牌不匹配并导致应用程序注销

  • 当我试图打开应用程序时,我被抛出,由于后端和异步存储的刷新令牌不匹配,我需要再次登录


  • 欢迎任何意见

    我不太明白第4步发生了什么。如果您有刷新令牌,您可以做的是捕获来自服务器的401/403响应,该响应应该指示令牌已过期。然后使用刷新令牌获取新的访问令牌并再次执行该操作。我认为不需要关闭应用程序然后再次打开。同意@Michal特洛伊奥斯基的说法。您需要的是一个拦截器来捕获401,然后尝试使用刷新令牌获取新令牌,然后在刷新令牌过期时重新请求原始URL或注销。我不知道你是如何处理你的请求的,但我使用的是截取器Prebuild附带的axios.hi@michalrojalowski谢谢你的回复。你现在可以通过第四点吗?但是应用程序关闭了吗?如果它没有关闭,那么一切都正常,对吗?是的,如果应用程序不尽快关闭,它就会正常工作