我们使用Liferay来管理portlet和会话,其余的应用程序是使用angular构建的。这些portlet本身就是单页面应用程序。我们面临的问题是,当会话超时并执行ajax请求时,liferay不会重定向用户。如果用户导航到某个其他portlet或重新加载页面,则liferay会识别该会话已超时,但如果用户点击页面上的某些链接(这不会导致页面重新加载),则liferay不会。确定该会话已超时。
要解决此问题,我尝试使用Javascript代码识别,如果liferay会话有效。我可以在我的JS中访问Liferay.Session对象,但我不确定我可以用什么函数或字段来识别会话是否有效。
有人可以帮我这个吗?
以下是我们用来访问Lieray会话的代码。
AUI().use('liferay-session', function(A) {
//Liferay.Session
//some logic
}
我们正在使用Liferay 6.0.2。
答案 0 :(得分:1)
由于您可以访问Liferay.Session
对象,因此您应该可以执行此操作以获取会话状态:
Liferay.Session.get('sessionState');
如果会话仍处于活动状态,它将返回“活动”。
答案 1 :(得分:0)
考虑您可以将门户设置为自动自动延长会话时间。会议永远不会过期。
使用此自定义值
设置portal-ext.properties文件session.timeout.warning=0
session.timeout.auto.extend=true
这可能是您应用的真实场景吗?
答案 2 :(得分:0)
您可以通过AJAX调用进行轮询,并从Java代码中检索会话的状态,或者创建一个隐藏字段,其中包含每个页面加载中保留的时间。 然后在Javascript中从当前时间做减法,如果用户没有时间,你可以执行任何你想要的动作。
是一种粘性方法,但可能对您的问题有用。
答案 3 :(得分:0)