halo-sigs / plugin-page-cache

为 Halo 2 提供页面的静态缓存功能,提高页面访问速度。
https://www.halo.run/store/apps/app-BaamQ
GNU General Public License v3.0
4 stars 1 forks source link

缓存策略问题 #4

Closed ruibaby closed 1 month ago

ruibaby commented 2 months ago

已知目前的缓存判断或者策略问题:

  1. 根据需求,登录用户访问页面不会经过缓存,也不会缓存页面结果。但目前可能存在登录用户也会缓存结果,这可能造成访客最终访问的网页是登录用户缓存的结果。
  2. 已登录用户首次打开网页,可能会经过缓存。
JohnNiang commented 2 months ago

经过排查,目前在 AdditionalWebFilter 中无法知晓当前用户的登录状态。通过 WebSession 获取登录状态的方式不完全正确,尤其是关闭浏览器后重新进入页面的时候,因为登录时用户选择了“记住我”,所以此时获取 WebSession 实际上为空,自动登录逻辑发生在 Security Filter Chain 上,并不在 PageCacheWebFilter 之前。

我这里提供一种方案:类似于这里提到的 WebFilter,我们再提供一种在认证之前和之后的 WebFilter 扩展点。这样我们就可以肥肠方便且可靠地获取当前用户的认证情况。

ruibaby commented 1 month ago

已经在 https://github.com/halo-dev/halo/pull/6297 中修复。

/close