【问题标题】:Refreshing token in FlutterFlutter 中的刷新令牌
【发布时间】:2019-11-04 09:05:06
【问题描述】:

我正在开发一个 Flutter 应用程序,并且我正在使用 OAuth2 进行身份验证。如果您未登录,该应用程序将无法使用,它只会显示一个登录屏幕并强制您登录。

当我登录时,我从身份验证服务器收到以下信息:

  • 访问令牌
  • 访问令牌有效期
  • 刷新令牌
  • 刷新令牌生命周期

当访问令牌即将过期时,我想通过向身份验证服务器发送刷新令牌来获取一个新的。

我将如何实现刷新令牌机制?我想在每次访问令牌过期之前更新它,即使用户不使用应用程序(它已关闭)。如果用户每次打开应用程序都需要登录,那将是非常糟糕的用户体验。为了避免这种情况,我想在后台刷新令牌。

如何才能在 Android 和 iOS 上实现这一点?最好不要为每个平台编写任何本机代码。

【问题讨论】:

    标签: flutter dart oauth


    【解决方案1】:

    您可以使用Future.delayed在到期前刷新令牌。

    您也可以使用background processes 在后台运行这部分代码,但您的应用程序必须在后台运行。

    【讨论】:

    • 所以默认情况下Future.delayed在应用关闭时不会执行?
    • 是的。我想您考虑在设备启动时启动服务以在后台运行代码作为可能的解决方案。 (stackoverflow.com/a/10945530/11577024) 如果没有本机代码,我不确定这是否可行。
    • 我已经考虑过您的问题的替代方案。您还可以处理 401 http 错误(令牌已过期),使用刷新令牌请求新令牌并重试您的请求。它消耗更少的电池,并且在手机关闭时也可以处理这种情况。
    • 好主意!谢谢,我会这样实现的。
    猜你喜欢
    • 2022-12-31
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2020-08-19
    • 2019-01-01
    • 2021-08-20
    相关资源
    最近更新 更多