【发布时间】:2017-03-15 09:27:44
【问题描述】:
我们有一个要求,如果满足某些条件,我需要强制注销用户。我写了一个PostLoginAction 钩子来检查条件并在满足条件时执行getSession().invalidate()。但在此之后,由于没有活动会话,Liferay 默认带我进入登录屏幕(prolly 使用过滤器)。如果我尝试重定向到 /ROOT/html/common/ 内的错误页面之一,我会得到一个神秘的 internal server error 页面。
此时,我需要显示一条错误消息,但所有重定向都在登录页面上结束。这样做的正确方法应该是什么?
顺便说一句,有没有办法在登录页面本身上显示错误消息,而不是重定向到其他页面?我已经尝试使用sessionErrors.add() 方法来实现相同的效果,但这也没有奏效。
如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
我说得对吗?您想在用户登录后立即注销用户吗?您能否添加您当前的
PostLoginAction以更好地解释问题? -
您是否尝试过在 liferay 中创建“login.events.pre”钩子并在操作类中使用户会话无效?
-
@TobiasLiefke - 我的代码几乎与下面的答案中给出的相似。
-
@ShivamAggarwal,我需要写一个登录后,因为我需要使用用户的 OrganizationId 来执行必要的检查。 PreLogin 操作不会触发 liferay 的身份验证机制,我将无法获取 User 对象(及其 OrganizationId )。
标签: liferay hook liferay-6 logout custom-error-pages