【问题标题】:Is it possible to set expiration date for Webpush subscription?是否可以为 Webpush 订阅设置到期日期?
【发布时间】:2020-02-14 08:00:56
【问题描述】:

我已经阅读了很多关于 Webpush 的文档,到目前为止,我已经了解到推送订阅应该具有 只读 属性expirationTime。此外,我了解如果 浏览器 确定订阅已过时(在服务人员中处理事件等),我应该如何反应。但是是否可以在不实现复杂的客户端逻辑的情况下以某种方式手动设置到期日期?我想这对于具有身份验证的应用程序来说是一个普通问题。

我的问题是,如果用户自动注销,webpush 端点仍然有效。我知道可以通过变通办法解决此问题的多种方法,但我想这不是解决相对基本问题的最佳方法。

【问题讨论】:

    标签: javascript authentication service-worker web-push


    【解决方案1】:

    很久以前我已经解决了这个问题,但我想分享我的解决方案可能会有所帮助。

    解决方案是使用 fetch('/path') 从 service worker 向应用发出 HTTP 请求,因为来自应用的所有 cookie 也附加到来自 SW 的请求。

    因此,如果用户未登录,您将被重定向到登录页面。

    我的代码:

        fetch('/path', {method: 'GET', redirect:'error'}).then(function(result) {
             ... //some code specific for my app
        }).catch(function(e) {
            registration.unregister(); //error on redirect to login
        });
    
    

    【讨论】:

    • 这个如何设置过期日期?
    • 它没有设置过期日期,但它使用不同的方法解决了问题:当用户注销时我们不再需要 SW,所以我们直接从 SW 中检查用户是否通过发送HTTP 并检查它是否得到响应(用户登录)或重定向(用户未登录)。
    猜你喜欢
    • 2014-07-12
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2014-09-27
    • 2012-01-06
    • 1970-01-01
    • 2017-11-30
    • 2016-03-20
    相关资源
    最近更新 更多