Как мне обновить cookie JSESSIONID с помощью HttpOnly, работая напрямую с заголовками Http? - PullRequest
0 голосов
/ 19 января 2011

Вот большая картинка

Я хочу добавить «HttpOnly» в Cookie JSESSIONID, но я хочу сделать это вручную, что означает:

//create a new cookie
StringBuilder updatedCookie = new StringBuilder("JSESSIONID").append("=")
                .append(sessionId).append("; Path=").append("/")
                .append("; HttpOnly");

//save the cookie
response.setHeader("SET-COOKIE", updatedCookie.toString());

Это делается в фильтре сервлетов, который сопоставляется со всем сайтом (шаблон фильтра имеет URL-адрес "/ *")

  1. Как я могу заставить этот фильтр работать только один раз? То есть при входе в систему или
  2. Действительно ли мне нужно запускать каждый запрос и проверять, был ли этот куки-файл уже помечен, и пропускать ответ «да»?

Есть предложения?

PS:

  1. Не говорите мне, чтобы перейти на Servlet 3.0, потому что я не могу сделать это прямо сейчас
  2. Игнорировать неправильное использование StringBuilder и отсутствующую переменную sessionId

1 Ответ

1 голос
/ 19 января 2011

Как я могу заставить этот фильтр работать только один раз? То есть при входе в систему

Не возможно. Возможно, сессия уже была создана заранее.

Теоретически, ваше лучшее место - HttpSessionListener#sessionCreated(), но это никак не дает вам объект HttpServletResponse, поэтому вы потерялись.

Действительно ли мне нужно запускать каждый запрос и проверять, помечен ли уже этот файл cookie, и пропускать ответ «да»?

Да. Однако это должно быть особенно дешево.

...