Использование Tomcat для предотвращения одновременного сеанса пользователя с того же ПК - PullRequest
1 голос
/ 20 марта 2012

Я посмотрел несколько хороших примеров SO, таких как Как предотвратить одновременный вход пользователей на сайт PHP / MySQL? , и они описывают проблему, которую я пытаюсь решить.В основном, разрешается только одному пользователю открывать один и только один сеанс за раз, будь то с одного или двух разных компьютеров.Поэтому запрос к базе данных для флага LoggedIN / Not LoggedIN - самое простое работоспособное решение.Как реализовать это - моя проблема.
Добавление проверки сеанса к каждой странице, которая запускается каждый раз, когда запрашивается страница, не работает, так как для этого потребуется изменить все наши JSP (Длинная история, но у нас нет общего заголовкафайл) Есть ли способ переконфигурировать Tomcat для выполнения некоторых проверок правильности при каждом запросе к базе данных?Может быть, с помощью клапанов или других средств?У меня нет большого опыта работы с Tomcat, поэтому я спрашиваю об этом.Thnx

1 Ответ

2 голосов
/ 20 марта 2012

Вместо изменения всех ваших файлов JSP вы можете использовать Filter .Фильтр позволит вам перехватывать запросы и выполнять некоторый уровень проверки запроса.

Тогда, однако, вы решите проверить наличие активных сессий на ваше усмотрение.

public class SessionCheckFilter implements Filter {
   public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
     throws IOException, ServletException {

   //Your validation code here.
   boolean returnValue = YourClass.performSessionValidation();
   if(returnValue){
      //Do Something
   }else{
     //Do Something else
   }

   //standard filter call
   chain.doFilter(req, res);
}

И затемв файле web.xml сопоставьте сервлет с вашим кодом.(изменить в соответствии с вашими потребностями)

<filter>
    <filter-name>SessionCheckFilter</filter-name>
    <filter-class>com.stackoverflow.SessionCheckFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SessionCheckFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

Для получения дополнительной информации см. информационную страницу servlet-filter здесь на SO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...