编辑1

在用例中我没有弄清楚的一件事是,浏览器不需要显示UX即可进行身份验证,或者至少它是可选的。

    var credential = await navigator.credentials.get({
            password: true,
            mediation: "silent",
            federated: {providers: federatedProviderURL}}
        );

如果用户已注销或从UA删除密码,则它将失败(凭据== null)。

凭据规范编写者可能会规定,如果从ServiceWorker进行调用,则中​​介必须是“静默的”,否则,并且如果没有可用的UI,则:-

错误-NOUI操作要求UI完成

但是这里的重点是,在大多数情况下,可以进行无 key 重新认证。

那会改变一切吗?

干杯理查德

原始帖子:-

如果我的ServiceWorker中的Fetch从服务器收到401,如果我没有焦点或前景的客户端,该如何与服务器重新进行身份验证?

注意:我说的是POST请求更新服务器,而不仅仅是从缓存中读取直到网络恢复。

让客户重新关注?对于没有采取任何措施引起该 react 的用户而言,这很可怕,而且他们可能仍然无法在那里再次登录。

如果收到401,Background-Synch会做什么?

如果将navigator.credentials显示在ServiceWorker中就足够了!

永不过期的 session ?

别人在做什么?

再次禁止我进入W3C/IETF Github :-(

如果有人可以将以下内容添加到ServiceWorker issues会有所帮助:-
请参阅Use-Case

如果用户 session 已过期,则ServiceWorker当前没有可用于与服务器重新进行身份验证的机制,因为没有可用于确定凭据的启发式机制。

如果credentials.get()可用,则重新认证可以透明地进行。如果是联盟的(例如Google),那么如果用户已注销,则该状态将受到尊重。

最佳答案

似乎以前对此进行过讨论。请参阅GitHub

我认为后台重新认证应该很少发生,以使登录或失败通知是一种适当且用户友好的解决方案。

如果您有任何想法,请在那边评论!

关于javascript - 如何在ServiceWorker中处理 session 过期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47320790/

10-10 10:35