相关疑难解决方法(0)

如何在所有浏览器中控制网页缓存?

我们的调查向我们表明,并非所有浏览器都以统一的方式尊重http缓存指令.

出于安全原因,我们不希望在我们的应用程序某些网页缓存,有史以来,通过Web浏览器.这必须至少适用于以下浏览器:

  • Internet Explorer 6+
  • Firefox 1.5+
  • Safari 3+
  • Opera 9+

我们的要求来自安全测试.从我们的网站注销后,您可以按后退按钮查看缓存页面.

https caching http http-headers

1474
推荐指数
17
解决办法
88万
查看次数

如何在JSF中实现登录过滤器?

即使用户知道某些页面的URL,我也想阻止访问某些页面.例如,/localhost:8080/user/home.xhtml(需要先登录)如果没有记录则重定向到/index.xhtml.

在JSF中如何做到这一点?我在Google上读到需要过滤器,但我不知道该怎么做.

jsf authorization login jsf-2 servlet-filters

47
推荐指数
1
解决办法
6万
查看次数

避免JSF Web应用程序上的后退按钮

我正在展示非常敏感的数据.用户从我的服务器注销后,我不希望其他用户能够看到数据点击浏览器的"后退"按钮.

我怎样才能做到这一点?

browser jsf back-button

46
推荐指数
2
解决办法
4万
查看次数

用于登录的身份验证过滤器和servlet

我有一个用于登录的过滤器.它在"用户名"和"密码"字段上执行文本检查.当且仅当文本检查正确完成时,请求才会进入Servlet.后者执行必须与数据库交互的控件.这个链条是否正确?

authentication servlets login-control servlet-filters

22
推荐指数
1
解决办法
5万
查看次数

在Logout Servlet中使会话无效

HttpSession session  = request.getSession();
try
{      
    session.removeAttribute("logonSessData");
    session.invalidate();                               
    String pageToForward = request.getContextPath();
    response.sendRedirect(pageToForward);           
}
catch (Exception sqle)
{
    System.out.println("error UserValidateServlet message : " + sqle.getMessage());
    System.out.println("error UserValidateServlet exception : " + sqle);
}
Run Code Online (Sandbox Code Playgroud)

在Logout servlet中我写了上面的代码doPostdoGet方法.注销后会显示登录界面,然后如果按下后退按钮,它会在注销前显示上一屏幕然后如果我点击任何页面显示"HTTP状态500",现在如果我按下F5则会加热登录Servlet并获得完全访问权限用户.

如何停止此问题显示在Logout使用后退按钮后F5用户无法使用任何页面?

java jsp servlets

13
推荐指数
2
解决办法
4万
查看次数

单击注销按钮,终止会话并重定向到登录页面

我在JSP中有以下代码:

当用户单击注销按钮时,我想将其重定向到登录页面并终止当前会话.我已成功完成重定向部分,但我不知道如何终止会话.怎么可以这样做呢?

javascript java session jsp

10
推荐指数
1
解决办法
9万
查看次数

如何通过点击"返回"按钮阻止用户查看以前用户的信息

我正在使用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();
      }
Run Code Online (Sandbox Code Playgroud)

此外,我在文件中还有以下代码: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>
Run Code Online (Sandbox Code Playgroud)

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 …
Run Code Online (Sandbox Code Playgroud)

javascript java servlets

9
推荐指数
3
解决办法
3371
查看次数

请求调用session.invalidate()后,request.getSession(false)不返回null

不应该使会话无效导致request.getSession(false)返回null吗?在我的注销servlet中,我打电话

session.invalidate();
Run Code Online (Sandbox Code Playgroud)

在我的登录状态过滤器中,我打电话

request.getSession(false);
Run Code Online (Sandbox Code Playgroud)

对getSession(false)的调用永远不会返回null,但与返回的会话对象关联的所有属性都为null.我目前通过搜索空属性来检测用户是否已注销,但这似乎不正确.

java servlets session-state java-ee

9
推荐指数
1
解决办法
2万
查看次数

会话到期时的授权重定向不适用于提交JSF表单,页面保持不变

我正在使用JSF2.我已经实现了一个自定义面部servlet,如下所示:

public class MyFacesServletWrapper extends MyFacesServlet {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

其中我正在进行一些授权检查并在用户未登录时发送重定向:

public void service(ServletRequest request, ServletResponse response) {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;

    if (...) {
        String loginURL = req.getContextPath() + "/LoginPage.faces";
        res.sendRedirect(loginURL);
    }
}
Run Code Online (Sandbox Code Playgroud)

这在用户尝试导航到另一个页面时有效.但是,当JSF命令链接/按钮提交JSF表单时,这不起作用.该行sendRedirect()线被击中并执行,没有异常被抛出了,但用户停留在同一页面.基本上,根本没有视觉变化.

为什么这适用于页面导航,而不是表单提交?

java jsf redirect authorization jsf-2

8
推荐指数
1
解决办法
9452
查看次数

servlet会话,在注销后,当按下浏览器的后退按钮时,再次显示安全页面

我有一个servlet和一个HTML页面.如何在注销后阻止用户点击浏览器的后退按钮?我在stackoverflow中读过相同的问题,但答案是使用浏览器历史记录禁用java脚本或使用页面 - 在http标头中没有缓存.我们如何使用阻止返回操作的servlet来实现它,http-header没有缓存是无用的,因为Firefox表示页面已经过期,当它再次刷新两次显示安全页面时.

我已经完成了一个方法,示例方法只是为了尝试(不是真实的)我的用户名和密码从HTML页面发布到servlet,如果密码和用户名是正确的,servlet将其存储在会话中.再次请求安全页面时,如果会话存在,则显示安全页面,并且用户从登录页面显示的会话中注销所有正在工作的ID,除非用户点击浏览器的后退按钮时注销失败.

如何防止安全servlet在注销后显示内容,然后在浏览器中按下后退按钮?

welcome.html的src

<html>
<body>

<form method="POST" action="Sessionexample">
<div align="center">
<table border="1"   style="border-collapse: collapse">
    <tr>
        <td>Username</td>
        <td><input type="text" name="username" size="20"></td>
    </tr>
    <tr>
        <td>Password</td>
        <td><input type="text" name="password" size="20"></td>
    </tr>
    <tr>
        <td height="24">&nbsp;</td>
        <td height="24">&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" value="Submit" name="B1"></td>
    </tr>
</table>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

servlet的src

public class Sessionexample extends HttpServlet implements Servlet , Filter {
    private static final long serialVersionUID = 1L;
    public String username =null, password=null;
    public HttpSession session ;
    public PrintWriter pw;
    int …
Run Code Online (Sandbox Code Playgroud)

java servlets servlet-3.0 servlet-filters servlet-listeners

6
推荐指数
1
解决办法
3万
查看次数