Истекло время ожидания сеанса пользователя, но не было подтверждений в течение длительного времени - PullRequest
0 голосов
/ 07 февраля 2012

У меня проблема с реализацией истечения времени ожидания сеанса пользователя. В нашем проекте мы используем JSF для структуры веб-дизайна и основные лица в качестве компонента Facelet. Я разработал следующий код в моей разработке:

    <p:idleMonitor onidle="idleDialog.show();" rendered="#{loginBean.loggedIn}" timeout="#{loginBean.activeUser.userTimeOut}" />
        <p:confirmDialog header="#{lang.signOut}" message="#{lang.signOutMess}" widgetVar="idleDialog" modal="true" closable="false" appendToBody="true" >
            <p:button outcome="logout.xhtml" value="#{lang.signOut}"/>
        </p:confirmDialog>

Приведенный выше код отлично работает с пользователями с короткими тайм-аутами, такими как 1-20 минут. Это автоматически вызывает диалоговое окно подтверждения с signOutMess. Однако тот же код не работает с пользователями с большим временем ожидания, например, одним часом. Это не вызывает диалоговое окно подтверждения, а вывод пользователя из системы. На самом деле, например, если пользователь с таймаутом - один час идет на один экран в системе и остается бездействующим на этом кадре в течение одного часа, экран не изменяется, но когда пользователь пытается открыть другой кадр в системе, он напрямую указывает на logout.xhtml, который на самом деле является целью и заставляет пользователя выйти из системы, но, опять же, я хотел бы заявить, что он не выбрасывает подтверждение.

Что бы вы, друзья, порекомендовали мне сделать в этом случае?

С уважением ...

1 Ответ

0 голосов
/ 07 февраля 2012

Возможно, вы неправильно понимаете, что на самом деле делает компонент idleTimeout. По сути, это таймер на стороне клиента, который может выполнить обратную передачу на стороне сервера или событие на стороне клиента после определенного интервала бездействия. Технически говоря, это может быть использовано, чтобы поддержать сеанс пользователя.

Проблема заключается в том, что если в течение определенного периода времени нет активности на стороне сервера, то для сеанса пользователей на сервере истечет время ожидания в соответствии с настройками веб-приложения или сервера. Если время сеанса на сервере истекло, idleMonitor неожиданно не начнет работать.

Вы можете увеличить время ожидания сеанса на своем веб-сервере, если 20 минут неприемлемо.

...