1

我目前正在使用 Workbox 来使用 Service Worker 完成一些缓存。现在,当用户注销时,我面临着从缓存中删除更多个性化数据的问题。我们已经通过在注销操作时向 SW 发布消息来实现这一点。但是,我在处理用户删除 cookie 的边缘情况时遇到了麻烦。由于我们如何进行身份验证,用户在 cookie 删除时会被注销。但是我们无法检测到此删除,因此无法清除缓存。

关于如何处理边缘情况或更好地处理 SW/Workbox 中经过身份验证的资产的任何建议?谢谢!

下面是我们当前流程的一个简短示例。

* sw.js */
self.addEventListener("message", msg => {
  if (msg.type) {
    switch (msg.event) {
      case "LOGOUT":
        // delete caches which contain personalized data
        Promise.all(
          exprPlugins.map(plugin =>
            plugin.deleteCacheAndMetadata(),
          ),
        )
        // ... other code
        break;
    }
  }
});
4

1 回答 1

0

我猜你可能会以一种过于 SW 的方式思考这个问题:-)

伪代码:

// Page loads / timer fires every one minute
// if (no cookie found) 
//  -- send logout msg to sw
// else 
//  -- send "the user logged in is *id from cookie*" kinda event
//  -- sw checks the data matches whoever is now logged in and if needed purges the cache

请注意,由于这不是手动删除 cookie 后的自动事件,恶意用户可以打开开发工具并查看前一个用户的数据。因此,这不是 SECURE,它更像是一种开玩笑的解决方法。

正如其他人指出的那样,您可能不应该将任何关键的 PII 信息缓存到缓存中。

于 2019-09-14T09:22:40.777 回答