У меня проблема с реализацией истечения времени ожидания сеанса пользователя. В нашем проекте мы используем 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, который на самом деле является целью и заставляет пользователя выйти из системы, но, опять же, я хотел бы заявить, что он не выбрасывает подтверждение.
Что бы вы, друзья, порекомендовали мне сделать в этом случае?
С уважением ...