javascript - 仅授权订阅的 Web 推送唯一设备 ID
问题描述
在我的网络应用程序中,我只需要向登录的用户发送网络推送通知,但在他们的所有设备中,我只在用户登录时提示通知,并将他的订阅存储在我的数据库中:端点、身份验证和 p256dh 密钥,以及用户 ID。
但这发生在每个用户的设备上,因此他可以登录多个设备并使用不同的端点和密钥多次存储。所以,在我的数据库中,我有这些行:
USER_ID 1, and all his PC's subscription keys
USER_ID 1, and all his mobile's subscription keys
现在,我希望当用户注销时,从数据库中删除他注销的设备上的订阅,但要做到这一点,我需要知道哪个订阅属于哪个设备。问题是:我不能只知道它。
我不能通过存储设备的 IP 来做到这一点,因为它是同一个网络并且没有意义,因为 IP 可以是动态的。
我不能通过用户代理来做到这一点,因为用户代理只能手动编辑,而且用户可以拥有两个具有相同用户代理的相同设备。
我无法通过将其存储在设备的本地存储中来做到这一点,因为我需要旧版浏览器的支持。
我不能通过将其存储在 cookie 中来做到这一点,因为人们可以删除该 cookie,而我不知道应该使用哪个令牌。
我该怎么办?有没有办法在 JS 中唯一标识用户而无需自己生成 ID?比如,idk,访问设备 ID。还是你有其他想法?
解决方案
当用户从设备注销时,您可以读取推送端点,并将其发送到服务器以进行删除。
推荐阅读
- r - 恢复导致内核恐慌的代码行
- subscribe - 在 DolphinDB 中启用订阅
- exception - 思科:如何路由已经在路由网络中的单个服务器 IP
- image - 在页面之间导航时图像组件闪烁 React Native + Expo
- apache-kafka - Kafka Streams 客户端库与 kafka 代理版本的兼容性
- docker - 如何在没有“无安装候选”错误的情况下在 openjdk:11 docker 基础映像上 apt-get install firefox?
- php - 将事件处理程序附加到在循环内创建的表单
- html-email - 自定义模板和 Gmail IOS 客户端的 Mailchimp 问题
- javascript - 如何使用cheerio和fs将网站转换为pdf
- python - 通过字节串中的套接字加载图像在python中需要永远