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