繁体   English   中英

会话超时glassfish安全性时如何显示错误消息?

[英]how to show error message when session time out glassfish security?

我正在使用jsf在我的J2ee项目中将Glassfish安全性与Realm一起使用。 我的会话在30分钟内超时。

当我单击组件时,它重定向到登录页面,这很好。

但是您希望在会话结束后用户单击组件时出现对话框,或者需要出现msg来警告用户会话已过期。

多数民众赞成为什么我尝试这种方式,但不能使用jsf侦听器:

<f:event listener="#{Logincontroller.checksessiontimeout}" type="preRenderView"/>

并在管理:

public void checksessiontimeout(ComponentSystemEvent event) 
    {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest)             context.getExternalContext().getRequest();
        if (request.getRequestedSessionId()!=null && !request.isRequestedSessionIdValid())
        { 
            System.out.println("Session Log OUT");
        }
    }

但是当会话超时时,对我来说什么都没印出来,证明功能没用。

如果您想向用户显示错误消息,建议您使用javascript。 我认为System.out.println只会在您的Glassfish控制台上打印一行。

尝试将其作为错误消息:

out.print("<script>alert(\"Session timed out!\");</script>");

如果您不能使用OmniFaces,那么如何使用idleMonitor每隔x毫秒检查一次会话状态? 当用户离开5分钟后返回网页时,以下内容将触发。 唯一的问题是,如果用户坐在那里在网页上移动鼠标而没有实际执行任何操作,则不会触发,但是会话仍然会超时。

<p:idleMonitor timeout="18000000">
<p:ajax event="active" listener="#{Logincontroller.checksessiontimeout}" />
</p:idleMonitor>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM