如何在ServiceWorker中处理会话过期

McM*_*phy 5 javascript authentication web-applications service-worker fetch-api

编辑1

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

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

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

凭证规范编写者可以规定,如果从ServiceWorker调用,调解必须是"无声",或者,如果没有,并且没有可用的UI,则:

错误 - NOUI操作需要UI才能完成

但重要的是,在绝大多数情况下,可以进行无密钥重新认证.

这会改变一切吗?

干杯理查德

原帖子: -

如果我的ServiceWorker中的Fetch从服务器收到401,如果我没有专注或前置的客户端,如何重新验证服务器?

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

让客户重新关注?对于没有采取行动导致反应的用户而言可怕,他们可能无论如何也无法再次登录.

如果获得401,Background-Synch会做什么?

如果navigator.credentials在ServiceWorker中出现就足够了!

永不过期的会话?

其他人在做什么?

然而我又被禁止参加W3C/IETF Github :-(

如果有人可以将以下内容添加到有助于ServiceWorker的问题: - 请参阅用例

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

如果credentials.get()可用,则可以透明地进行重新身份验证.如果联合(比如谷歌)那么如果用户已经注销,那么该状态将被尊重.

McM*_*phy 1

好像之前就有人讨论过这个问题。请参阅GitHub

我认为后台重新身份验证应该足够少,以便登录或失败的通知是一个适当且用户友好的解决方案。

如果您有什么想法请在那边评论!