是否可以为 Webpush 订阅设置到期日期?
Is it possible to set expiration date for Webpush subscription?
我已经阅读了很多关于 Webpush 的文档,到目前为止我明白推送订阅应该有一个 只读 属性 expirationTime
。此外,我了解如果 浏览器 决定订阅已过时(处理服务工作者中的事件等),我应该如何反应。但是是否可以在不实现复杂的客户端逻辑的情况下以某种方式手动设置到期日期?我想这对于有身份验证的应用程序来说是一个普通的问题。
我的问题是,如果用户自动注销,webpush 端点仍然有效。我知道有多种方法可以通过变通方法解决这个问题,但我想这不是解决相对基本问题的最佳方法。
很久以前我就解决了这个问题,但我想分享我的解决方案会有所帮助。
解决方案是使用 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
});
我已经阅读了很多关于 Webpush 的文档,到目前为止我明白推送订阅应该有一个 只读 属性 expirationTime
。此外,我了解如果 浏览器 决定订阅已过时(处理服务工作者中的事件等),我应该如何反应。但是是否可以在不实现复杂的客户端逻辑的情况下以某种方式手动设置到期日期?我想这对于有身份验证的应用程序来说是一个普通的问题。
我的问题是,如果用户自动注销,webpush 端点仍然有效。我知道有多种方法可以通过变通方法解决这个问题,但我想这不是解决相对基本问题的最佳方法。
很久以前我就解决了这个问题,但我想分享我的解决方案会有所帮助。
解决方案是使用 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
});