代码之家  ›  专栏  ›  技术社区  ›  Jalal El-Shaer

如何在用户离线使用Angular PWA时处理身份验证?

  •  1
  • Jalal El-Shaer  · 技术社区  · 6 年前

    我有一个 angular 四黄水蜜外敷 PWA . 我主要关心的是允许用户在没有互联网连接的情况下离线使用应用程序。 问题是:我怎样才能做到 IdentityServer OIDC ? 我正在考虑以下解决方案:假设我有一个有效的“刷新令牌”,那么只要Internet连接处于脱机状态,我就认为用户仍然是经过身份验证的。当然,这意味着用户已经在“在线”状态下登录。

    在“离线”的情况下处理“登录”的任何建议。例如,Windows操作系统使用某种“本地存储”对用户进行身份验证,即使他们没有Internet连接。 有什么建议,谢谢

    0 回复  |  直到 6 年前
        1
  •  3
  •   Balaj Khan Prajwal Shrestha    6 年前

    假设用户有Internet连接并登录到应用程序:

    • 保存刷新令牌 localstorage.setItem('resfreshToken', yourToken)
    • 当用户打开应用程序时,请检查 localstorage.getItem('refereshToken')
    • 如果不为空,则验证用户。

    据我所知 refresh tokens 不要过期,以便始终可以使用刷新令牌获取新令牌。所以当网络连接恢复时,您可以使用 refresh token 请求新的 access token 并提交数据更改。

        2
  •  1
  •   Fabio Manzano    6 年前

    关于你的评论:

    我关心的是“过期的令牌”并允许用户“使用”应用程序,即使它们处于“脱机”状态

    我会在应用程序内部创建某种验证,限制用户离线使用应用程序的时间,比如时间戳。此时间到期后,您可以删除访问/刷新令牌并强制登录(即强制用户再次联机并运行新的身份验证/授权过程)。

        3
  •  1
  •   androbin    6 年前

    在我看来,oidc没有那样的特征。

    你可以在 interceptor 如果用户是 online . 如果不是你可以用 IndexedDB 来存储请求。

    有一个 event 你可以订阅 Renderer2 listen . 如果发生事件,通知服务尝试从indexeddb获取操作,并在刷新令牌后重播这些操作。

    如果使用redux,还可以保存无法完成的操作。

    推荐文章