【发布时间】: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