我正在使用JSP和Oracle 11g开发Web应用程序。我能够跨会话维护数据,并且注销会使会话无效,从而安全终止Web应用程序。
但是,我无法解决后退按钮的问题。我的项目与银行业务有关,因此应用程序中的数据被认为是敏感的。因此,我要实现以下功能:如果有人按下“后退”按钮,则该会话应终止并重定向到登录页面。进一步尝试尝试应将其重定向到登录页面。我遵循以下线程:
servlet会话,注销后,当按下浏览器的后退按钮时,再次显示安全页面
但是我面临的问题是它不能统一工作。设置“ no cache”选项有时会起作用。有时显示页面已过期(预期)的错误。但是,当我再次单击后退然后前进时,页面按原样显示(意外行为)。如果按下后退按钮后输入网址,那么也可以访问该网址。同样,如果我要打开两个单独的会话,那么它将在一个会话中工作,而不是在另一个会话中工作。
它变得有些混乱,并导致了意大利面条式代码。
关于这个问题有什么解决方法吗?
我发现了其他一些解决相同问题的示例,但它们使用的是另一种语言(PHP)。我不熟悉php,因此无法解读代码的含义。
任何帮助表示赞赏。
此致,拉乔西·穆克吉(Rajorshi Mukherjee)。
好的,谢谢那些看过问题者的人。当然,我期望有人能帮助我摆脱困境。无论如何,我已经找到了解决我正在解决的问题的解决方案。我添加了在这些帖子中共享的代码:
在显示编译指示,高速缓存控制的部分,我发现在应用程序中存在的每个页面中都包含此代码可以解决此问题。因此,如果用户登录到系统,然后遍历许多不同的页面,然后突然决定返回,那么在所有页面中,他都会发现该页面已过期并且无法再访问。但是,仍然向用户显示登录的第一页,因为一旦用户返回第一页,用户可能会再次希望使用其凭据登录。我最初在此问题上遇到问题,因为当我向前按压页面时,该页面将再次可见。但是我现在意识到这主要是因为我没有在所有页面中都包含cache-control指令。
感谢您的阅读。
编辑:前段时间我遇到了另一个问题。在我使用的servlet中,
request.getRequestDispatcher("url").forward(request, response);
这造成了一个问题。即使页面已过期,如果我重新加载页面,该页面也将再次正常显示或显示错误页面。会话似乎根本没有过期。为了克服这个问题,我使用了
response.sendRedirect("url");
那种方式,将响应永久性地重新定位到下一页,并且成功完成了对页面加载的所有验证,因此没有错误的数据在爬升。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句