서블릿 내부에서 (지속/크로스 브라우저 세션) 쿠키의 데이터를 올바르게 설정하고 필터에서 읽는 데 문제가 있습니다.서블릿으로 쿠키 처리
String encodedValue = new String(Base64
.encodeBase64(req.getParameter("account").getBytes()));
Cookie cookie = new Cookie("projectAuthenticationCookie", encodedValue);
cookie.setMaxAge(24*60*60);
cookie.setPath("/");
res.addCookie(cookie);
이 응답 내부의 쿠키를 얻을 것이다,하지만 나는 다음과 같은 코드 내 필터 내에서 그것을 읽을 때 :
서블릿의 코드 (시간에 로그를 실행하는)입니다
Cookie authenticationCookie = null;
Cookie[] cookies = ((HttpServletRequest) request).getCookies();
for (Cookie cookie : cookies){
if ("projectAuthenticationCookie".equals(cookie.getName())) {
authenticationCookie = cookie;
}
}
내가 설정 한 값만 가져오고 다른 모든 필드는 null이거나 비어 있거나 다를 수 있습니다. 예를 들어 최대 사용 기간은 항상 -1을 반환하므로 쿠키가 지속되지 않습니다.
내가 가진 만료 헤더를 설정하려 : 나는 유효한이 헤더를 만료하지 않고 세션이 어쨌든 시간이 초과 것을 읽을
res.setDateHeader("Expires", System.currentTimeMillis() + 24*60*60*1000);
, (만약 내가 잘못 날 수정)하지만, 그것도 도움이되지 않았다 ...
내가 생각하고있는 한 가지 문제점은 localhost (cookie.setDomain ("localhost") 설정도 시도했지만 행운 없음)에서 실행 중이다. 내 웹 서버/셀 렛 컨테이너는 Jetty 7입니다. 그러나 이것이 적합하다고는 생각하지 않습니다.
힌트 : 어떤 힌트가 있습니까?
왜이 정보가 필터에 정확히 필요합니까? maxage가 만료되면 클라이언트는 단순히 쿠키를 다시 보내지 않습니다. 서버가 유효한지 여부를 알 필요없이 서버에 체크인 만하면됩니다. – BalusC