Перенаправление пользователя на домашнюю страницу при простое в течение определенного периода времени

Я хотел бы отправить пользователя на /login.xhtml если он / она бездействует в течение определенного периода времени. Я пробовал начертания <p:idlemonitor> но не могу понять, как этого добиться.

3 ответа

Решение

Использовать IdleMonitorсоставная часть<p:idleMonitor>

<p:idleMonitor timeout="3000">
    <p:ajax event="idle" listener="#{idleMonitorBean.processTimeOut()}"/>
</p:idleMonitor>

Замечания:timeoutв миллисекундах

Тогда в вашем методе слушателя просто укажите redirect() дорожка.

@Model
public class IdleMonitorBean {

    public void processTimeOut() throws IOException {
        FacesContext.getCurrentInstance().getExternalContext().redirect(
                "/contextroot/index.xhtml");
    }
}

В этой ситуации я бы предпочел оставить все на стороне клиента. Расширения PrimeFacespe:javascriptможет помочь здесь. Например:

      <p:idleMonitor timeout="...">
  <pe:javascript event="idle"
                 execute="top.location.href='#{request.contextPath}/login.xhtml'"/>
</p:idleMonitor>

Вы можете наблюдать за действиями пользователя, такими как щелчки (возможно, вы считаете движение мыши или прокрутку не идеальными, полностью зависит от вас).

    var resetActivityTimer = function () {
        if (typeof window.userActivity != 'undefined')
            clearTimeout(window.userActivity);
        window.userActivity = setTimeout(function () {
            window.location.href = 'login.xhtml';
        //number of ms until to be considered as ideal
        }, 30000);
    };

    $(window).click(function () {
        //if user clicked he/she is not ideal
        resetActivityTimer();
    });

    //initialize timer
    resetActivityTimer();

Обратите внимание: если вы хотите рассматривать прокрутку или движение мыши как активность, не забывайте регулировать события.

Другие вопросы по тегам