Машины за NATом путаются сессии
Странная вещь происходит.
Есть две машины клиенты за NATом, есть сервер tomcat6, контроль сессии осуществляется посредством объекта HttpSession. И вот какая ерунда происходит: Данные отправленные первым пользователем заносятся в базу с идентификаторами второго. Как запрограммировано: Пользователь (Объект java) User хранится в объекте HttpSession. С клиента через AJAX отправляются данные без id пользователя или иных идентификаторов. Данные получает сервлет, извлекает из объекта session объект user (в нем поле id) и кладет эти данные с его id в базу. |
Сессия к юзеру как привязывается?
|
Пользователь на странице вводит логин-пароль-> сервелет проверяет в базе, если пароль логин есть, создает объект User (поля: id, name и тд) потом HttpSession session= request.getSession(); session.putAttribute("user",User) Ну потом каждый раз при запросе session= request.getSession(); а потом извлекаю пользователя и беру его id.
|
Это всё прекрасно. А сессия к юзеру как привязывается? На более низком уровне: по куке, по айпишнику, еще как?
Выглядит, что по айпишнику, а лучше бы по куке. |
Нет, ну естественно по куки. Контроль сессии при помощи HttpSession осуществляется по куки Вот расшифровка запроса от клиента (клиент был тут я):
host=localhost:8080 user-agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0 accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 accept-language=en-us,en;q=0.5 accept-encoding=gzip, deflate connection=keep-alive referer=http://localhost:8080/TESTPROG/ cookie=JSESSIONID=2D1CA46027B2C516577DC7C842E3CC58 content-type=application/x-www-form-urlencoded content-length=50 |
Часовой пояс GMT +3, время: 05:22. |