【问题标题】:How to handle Session Expiry in ServiceWorker如何处理 ServiceWorker 中的会话过期
【发布时间】:2018-04-29 11:13:57
【问题描述】:

编辑 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,Background-Synch 会做什么?

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

永不过期的会话?

其他人在做什么?

我又被 W3C/IETF Github 禁止了:-(

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

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

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

【问题讨论】:

  • 可以发送通知,但如果自动登录可用/应该可用,为什么会惹恼用户?

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


【解决方案1】:

之前好像有讨论过。请看GitHub

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2016-05-23
    • 1970-01-01
    • 2012-08-02
    • 2014-08-30
    • 2014-10-22
    • 2016-08-12
    相关资源
    最近更新 更多