2013-06-15 4 views
0

Добро пожаловать. У меня есть фильтр входа, который проверяет, не закончился ли текущий сеанс пользователя. Лица-config:Срок действия истек

<filter> 
     <filter-name>filter</filter-name> 
     <filter-class>filter.LoginFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>filter</filter-name> 
     <url-pattern>/protected/*</url-pattern> 
    </filter-mapping> 
    <session-config> 
     <session-timeout> 
      1 
     </session-timeout> 
    </session-config> 
    <error-page> 
     <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
     <location>/login.xhtml</location> 
    </error-page> 

Фильтр применяется только к страницам в защищенной папке. По окончании сеанса перейдите на страницу login.xhtml. У меня есть несколько сайтов без защищенной папки, но сеанс на этих страницах также истекает. Зачем?

+0

Это не * faces-config.xml * вместо вашего * web.xml * файла. –

ответ

1

Единственное в своем web.xml, что имеет отношение к жизни сеанса связи

<session-config> 
    <session-timeout> 
     1 
    </session-timeout> 
</session-config> 

, который устанавливает тайм-аут сеанса в одну минуту. Неважно, есть ли у вас набор Filter или нет. Или еще не зарегистрирован ли пользователь на сайте.

session является глобальным для клиент и создается, даже если клиент еще не зарегистрировался в явном виде (с именем пользователя и паролем). Это просто, что после входа вы установили что-то в уже создал объект session, который также аутентифицирует клиента.

Итак, когда истекает срок действия session, он истекает глобально, т.е. для всех страниц вашего веб-приложения; независимо от того, находятся они внутри /protected или нет.

Смежные вопросы