如何在ServiceWorker中处理会话过期

时间:2017-11-16 02:55:25

标签: javascript authentication web-applications service-worker fetch-api

编辑1

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

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

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

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

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

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

这会改变一切吗?

干杯理查德

原始帖子: -

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

注意:我正在谈论更新服务器的POST请求,而不只是在网络恢复之前从缓存中读取。

让客户重新关注?对于没有动作导致反应的用户来说可怕,他们可能无论如何也无法再次登录。

如果获得401,后台同步会做什么?

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

永不过期的会话?

其他人在做什么?

我再次被禁止参加W3C / IETF Github: - (

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

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

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

1 个答案:

答案 0 :(得分:1)

之前似乎有过讨论。请海GitHub

我认为重新验证的背景应该很少,以至于登录或失败的通知是一种适当且用户友好的解决方案。

如果您有任何想法,请在那里发表评论!