Есть небольшой веб-портальчик для локальной сетки с самописным форумным jsp/servlet движком.
Хочу написать правильный счетчик посещений (отображает хосты/хиты за день/неделю/все время работы).
Для подсчета хостов, написал фильтр, который по request.getSession.isNew инкрементит каунтер.
Таким образом, если юзер заходит на страничку утром и вечером, то это считается за 2 хоста, ибо утренная сессия отваливается по таймауту.
Но в таком случае, каждый раз когда юзер заходит на форум, ему придется вводить логин/пароль заново, что довольно утомительно. Если установить время сессии бесконечное, то каунтер будет работать неверно, да и для списка "присутствующий сейчас на сайте" придется имплементить логику с getLastAccessedTime().
Есть вариант, посылать в куках помимо sessionID также login/password_hash, но это как-то не очень секьюрно, да и лишная нагрузка на сеть.
Как же быть? наверняка же есть стандартные patternы...
Здравствуйте, anl, Вы писали:
anl>Есть небольшой веб-портальчик для локальной сетки с самописным форумным jsp/servlet движком. anl>Но в таком случае, каждый раз когда юзер заходит на форум, ему придется вводить логин/пароль заново, что довольно утомительно. anl>Есть вариант, посылать в куках помимо sessionID также login/password_hash, но это как-то не очень секьюрно, да и лишная нагрузка на сеть.
почему-то ничего, кроме как перейти на сертификаты в голову не приходит. но движок удобств их генерации и раздачи будет сделать сложнее, чем логику с lastAccessTime
а вообще, не вижу большой проблемы — очень часто браузеры сами могут помочь "запомнить" пароль. да, странички с логином не избежать, но поля заполнит браузер, а пользователю останется только "ok" нажать
Здравствуйте, anl, Вы писали:
anl>Есть вариант, посылать в куках помимо sessionID также login/password_hash, но это как-то не очень секьюрно, да и лишная нагрузка на сеть. anl>Как же быть? наверняка же есть стандартные patternы...
почитай в AcegiSecurity раздел по RememberMe. Суть в том, что фреймвокр передает в кукисах не имя/пароль, а комбинацию
username + ":" + expiryTime + ":" + Md5Hex(username + ":" + expiryTime + ":" + password + ":" + key). Потом механизм аутентификации проверяет наличие такого кукиса, и если он установлен, разбирает его, получает информацуию из базы по имени пользователя, вычисляет по ней то же что выделено жирным и сравнивает с тем, что пришло из запроса. Если строки совпадают — считается что пользователь прошел аутентификацию. Естественно что для полной безопасности аутентификация и последущая работа с приложением должна проходить через защищенную среду передачи.
L>почитай в AcegiSecurity раздел по RememberMe. Суть в том, что фреймвокр передает в кукисах не имя/пароль, а комбинацию L> username + ":" + expiryTime + ":" + Md5Hex(username + ":" + expiryTime + ":" + password + ":" + key). Потом механизм аутентификации проверяет наличие такого кукиса, и если он установлен, разбирает его, получает информацуию из базы по имени пользователя, вычисляет по ней то же что выделено жирным и сравнивает с тем, что пришло из запроса. Если строки совпадают — считается что пользователь прошел аутентификацию. Естественно что для полной безопасности аутентификация и последущая работа с приложением должна проходить через защищенную среду передачи.
спасибо. кажется это именно то, что нужно