2013-09-25 89 views
4

我需要启用缓存并禁用用户在注销后返回信息。如何在JSP中注销后防止用户返回,但保留缓存?

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

使用JSP(特别是CQ5),这甚至有可能吗?

我心里有以下解决方案,但我不知道这是我需要的最佳方法:

  1. 禁用缓存无处不在。这是有效的,但是不可接受,因为我们正在使用的发布商将会忙于重新配页。
  2. “注销”按钮发布到页面A.页面A杀死会话并将用户转发到页面B并显示一些“您已注销”的消息。页面B的“返回”将弹出消息浏览器提供的关于不得不重新发布值的消息。是=他们退出(此时无害)并再次转发到页面B.否=他们坐在Page A无害。但是,“返回”+“否”+“返回”可能会将它们置于缓存页面上,或者历史记录中的选择仍然会显示缓存页面。
  3. “注销”按钮会弹出一个新窗口,询问他们是否确定/警告他们关闭会话。 “我确定”做了一个window.opener.reload()或window.opener.close()。但是,如果JavaScript被禁用,我们注定要失败。
  4. “注销”发布到当前页面。所有页面都检查一些POSTd值的存在。如果存在,转到页面B并显示“您已被注销的消息”。与#2类似。这实际上会将页面重新缓存到“您已注销”页面,但“返回”或历史记录仍然会有缓存页面。

是否有某种方法可以手动清除用户的缓存,或者强制甚至在缓存页面上进行验证检查?我在这里没有想法...

+0

只有约2%的用户禁用了JavaScript。你的用户是否这样做? –

+0

我们可以假设每个人都有JS,并且可以优雅地退化,也许会有一条消息说“关闭浏览器”,但如果我们采取这种方法,那么其中一个+消息说关闭浏览器似乎更好。 – oooyaya

+0

你想如何禁用缓存?你的意思是在浏览器中禁用它? – betatester07

回答

0

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

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

如果你让一个单独的JSON调用拉下数据,该infomration将是轻量级的,但仍然是安全的,因为它不会在系统上缓存,但也不是HTML格式等

的填充页面还可以具有智能来显示登录挑战,如果用户会话因任何原因而被中断,则他们重新打字并从他们离开的地方继续,同时仍保持后退按钮到位。

我也会想,如果有任何敏感信息被保存在历史记录中,比如id,action等,那么这也是一个问题。

只需要考虑几件事。

相关问题