java - 如何防止用户进入 'back' 但在 JSP 中注销后保留缓存?

标签 java jsp caching logout aem

我需要启用缓存并禁止用户在注销后返回时看到信息。

我知道在注销 + 后退按钮时显示的缓存页面是浏览器中的设计。我知道禁用缓存是一种强制注销+返回以强制重新验证的方法。

对于 JSP(特别是 CQ5),这甚至可能吗?

我想到了以下解决方案,但不确定哪种方法最能满足我的需求:

  1. 到处禁用缓存。这可行,但 Not Acceptable ,因为我们使用的发布商将忙于重新上传页面。
  2. “注销”按钮发送到页面 A。页面 A 终止 session 并将用户转发到页面 B,并显示一些“您已注销”消息。页面 B 的“返回”将弹出浏览器提供的关于必须重新发布值的消息。是 = 他们注销(此时无害)并再次转发到页面 B。否 = 他们无害地坐在页面 A 上。但是,“后退”+“否”+“后退”可能会将它们放在缓存页面上,或者历史记录中的选择仍会显示缓存页面。
  3. “注销”按钮会弹出一个新窗口,询问他们是否确定/警告他们关闭 session 。 “我确定”执行 window.opener.reload() 或 window.opener.close()。但是,如果禁用 JavaScript,我们就完蛋了。
  4. “注销”发布到当前页面。所有页面都检查某些 POSTd 值是否存在。如果存在,转发到页面 B 并显示“您已注销消息”。类似于#2。这实际上会将页面重新缓存到“您已注销”页面,但“返回”或历史记录仍将有缓存页面。

有没有什么方法可以手动清除用户的缓存,或者强制对缓存页面进行验证检查?我在这里没有想法......

最佳答案

你的问题是你试图缓存一些应该保密的东西。缓存密码背后的信息是不安全的,并且存在风险。

但是,将页面的通用 html 部分缓存在密码后面可能是有意义的。在这方面,任何登录用户可以看到的任何内容都是可以的。只有用户名、地址、电话号码等特定信息是敏感的。

如果您进行单独的 JSON 调用来提取数据,信息将是轻量级的,但仍然是安全的,因为它没有缓存在系统上,也没有用 html 格式等填充。

如果用户 session 因任何原因中断,该页面还可以智能地显示登录挑战,他们重新键入并从中断的地方继续,同时仍保留后退按钮。

我还认为,如果历史记录中保留了任何敏感信息,例如 ID、操作等,那也可能是个问题。

只需考虑几件事情。

关于java - 如何防止用户进入 'back' 但在 JSP 中注销后保留缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19008875/

相关文章:

android - Retrofit response : Cache Control. 是什么意思?

java - MAVEN 构建失败 - 无法解决项目 XYZ 的依赖关系

java - 根据登录的用户将JSP页面重定向到另一个JSP页面

java - java变量的奇怪行为

java - 在JSP中显示带有绝对路径的图像

multithreading - 缓存可以保存来自多个进程的数据吗?

java - 优化图片显示

java - 如何使用 Gradle 将源代码发布到本地 Maven 存储库?

java - 在 Angular4 中渲染缩略图

c# - 无法让 AspNetCacheProfile 在 WCF 4.0 服务中工作