gpt4 book ai didi

java - 如何通过点击 "Back"按钮来防止用户看到以前用户的信息

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:35 25 4
gpt4 key购买 nike

<分区>

我正在使用 servlet 开发一个 java web 应用程序,为了防止用户点击后退按钮查看以前用户的信息,我有以下代码:

      protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
HttpSession session=request.getSession(true);

response.setContentType("text/html");
response.setHeader("Cache-Control","no-cache,no-store");
response.setDateHeader("Expires",0);
response.setHeader("Pragma","no-cache");

......

// if (!User_Logged_In)
session.invalidate();
}

此外,我在文件中还有以下代码:web/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
......
<filter>
<filter-name>ResponseHeaderFilter</filter-name>
<filter-class>ResponseHeaderFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>private,no-cache,no-store</param-value>
</init-param>
<init-param>
<param-name>Pragma</param-name>
<param-value>no-cache</param-value>
</init-param>
<init-param>
<param-name>Expires</param-name>
<param-value>0</param-value>
</init-param>
</filter>

</web-app>

ResponseHeaderFilter.java 看起来像这样:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class ResponseHeaderFilter implements Filter
{
FilterConfig fc;

public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException
{
HttpServletResponse response=(HttpServletResponse)res;

for (Enumeration e=fc.getInitParameterNames();e.hasMoreElements();) // Set the provided HTTP response parameters
{
String headerName=(String)e.nextElement();
response.addHeader(headerName,fc.getInitParameter(headerName));
}
chain.doFilter(req,response); // Pass the request/response on
}

public void init(FilterConfig filterConfig)
{
this.fc=filterConfig;
}

public void destroy()
{
this.fc=null;
}
}

到目前为止,它仍然无法正常工作。后退按钮将弹出一个警告窗口,提示数据已过期,询问用户是否要重新发布。如果你选择是,它仍然会显示以前的页面信息。我究竟做错了什么?有什么解决方法?

弗兰克


是的,我正在为公共(public)场所的 PC 开发一个网络应用程序,如果用户 B 点击后退按钮,他可能会看到用户 A 的私有(private)信息。

我试图将 session ID 与 servlet 一起使用,但是如何操作,有示例代码吗?

我还尝试了以下方法:

<Html>
<Head>...</Head>
<Body onLoad=document.execCommand("ClearAuthenticationCache","false")>
......
<script type="text/javascript">
// Clear current credentials : Requires IE6 SP1 or later
// document.execCommand("ClearAuthenticationCache");
document.execCommand("ClearAuthenticationCache","false");
</script>
......
</Html>

它适用于 IE,但适用于 Firefox。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com