Jsp 过滤罐';启动时无法访问Cookie

Jsp 过滤罐';启动时无法访问Cookie,jsp,session,cookies,servlet-filters,tomcat8,Jsp,Session,Cookies,Servlet Filters,Tomcat8,我实现了一个过滤器类,用于检查用户是否已经登录 在登录期间,将创建一个cookie和一个数据库条目,并且Filter类将检查是否设置了某些会话属性,或者cookie是否与数据库记录等效 通常它工作正常,但在Tomcat重新启动后,我必须再次登录。就像我关掉电脑一样 首先,我的印象是,在数据库中更新的会话中,可能有一个未被注意到的变化,但是对于这个理论没有任何线索 我的下一个假设是会话ID被更新了,数据库没有跟上——但是在实现了会话ID历史记录之后,更新总是顺利进行,并且过滤器可以按照预期进行区

我实现了一个过滤器类,用于检查用户是否已经登录

在登录期间,将创建一个cookie和一个数据库条目,并且Filter类将检查是否设置了某些会话属性,或者cookie是否与数据库记录等效

通常它工作正常,但在Tomcat重新启动后,我必须再次登录。就像我关掉电脑一样

  • 首先,我的印象是,在数据库中更新的会话中,可能有一个未被注意到的变化,但是对于这个理论没有任何线索
  • 我的下一个假设是会话ID被更新了,数据库没有跟上——但是在实现了会话ID历史记录之后,更新总是顺利进行,并且过滤器可以按照预期进行区分
  • 现在我检查了所有cookie是否都存在,根据Firefox,它们确实存在。(在调试的同时检查)

我开始调试我的过滤器类,发现只有一个cookie存在:

@Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

    res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
    res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    res.setDateHeader("Expires", 0); // Proxies.

    boolean positive = false;

    //is ok
    if (req.getSession().getAttribute("Benutzername") != null && req.getSession().getAttribute("BenID") != null) {
        positive = true;
    }
    if (!positive) {
        cookies.GetCookie gc = new cookies.GetCookie(req.getCookies());
        /**
        Checks...
        **/
    }
    try {
            fc.doFilter(request, response);
        } catch (NullPointerException nupo) {
            Logger.getLogger(SessionCheckFilter.class.getName()).log(Level.SEVERE, null, nupo);
            if (request == null) {
                Logger.getLogger(SessionCheckFilter.class.getName()).log(Level.INFO, "Request is null");
            }
            if (response == null) {
                Logger.getLogger(SessionCheckFilter.class.getName()).log(Level.INFO, "Response is null");
            }

        }
    }
req.getCookies()
只返回CookieJSessionID。 在我再次登录后,所有cookie都可以再次访问。。。这怎么可能

这也是web.xml,是不是我忘了什么。。。?我正在使用Tomcat8.0.15.0和JDK1.8作为JavaEE7Web

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
    <filter>
        <description>Sollte den Login überprüfen</description>
        <filter-name>Loginpruefung</filter-name>
        <filter-class>filter.SessionCheckFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Loginpruefung</filter-name>
        <url-pattern>/filter/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref>
        <res-ref-name>jdbc/sqlserv</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    <jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>
</web-app>

索尔特登入酒店
罗金普卢芬酒店
filter.SessionCheckFilter
罗金普卢芬酒店
/滤器/*
要求
向前地
包括
错误
30
index.jsp
jdbc/sqlserv
javax.sql.DataSource
容器
可分享
*.jsp
真的