我有一个angular的PWA应用程序。我主要关心的是允许用户离线使用应用程序而无需连接互联网。 问题是:我该如何使用IdentityServer和 OIDC? 我正在考虑以下解决方案:假设我有一个有效的“刷新令牌”,那么只要Internet连接处于脱机状态,我就会认为该用户仍在身份验证中。当然,这意味着用户已经在“联机”时登录。
关于在“离线”时处理“登录”的任何建议。例如,Windows OS使用某种“本地存储”来进行身份验证用户,即使他们没有Internet连接也是如此。 任何建议,感激
答案 0 :(得分:4)
假设用户已连接互联网并登录到应用程序:
localstorage.setItem('resfreshToken', yourToken)
localstorage.getItem('refereshToken')
据我所知refresh tokens
不会过期,因此您始终可以使用刷新令牌来获取新令牌。因此,当互联网连接恢复时,您可以使用refresh token
来请求新的access token
并提交数据更改。
答案 1 :(得分:1)
关于您的评论:
我关心的是“令牌已过期”,即使用户处于“离线”状态,也允许用户“使用”应用程序
我将在应用程序内部创建某种形式的验证,以限制用户可以离线使用应用程序的时间,例如时间戳。一旦此时间到期,您可以删除访问/刷新令牌并强制登录(即,强制用户再次在线并运行新的身份验证/授权过程)。
答案 2 :(得分:1)
我看到OIDC没有这样的功能。
如果用户是interceptor,则可以签入online。如果没有,您可以使用IndexedDB来存储请求。
您可以通过event订阅Renderer2 listen。如果发生事件,请通知服务尝试从IndexedDB获取操作,并在刷新令牌后重播它们。
如果您使用redux,还可以保存无法完成的操作。