[英]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.