我们有一个要求,如果满足某些条件,我需要强制注销用户。我写了一个PostLoginAction
钩子来检查条件并在条件满足时执行getSession().invalidate()
。但在此之后,由于没有活动会话,Liferay默认带我登录屏幕(使用过滤器)。如果我尝试重定向到/ROOT/html/common/
中的一个错误页面,我会收到一个神秘的内部服务器错误页面。
此时,我需要显示错误消息,但所有重定向都在登录页面上结束。这样做的正确方法应该是什么?
请注意,是否有办法在登录页面上显示错误消息而不是重定向到其他页面?我尝试使用sessionErrors.add()
方法来实现同样的目标,但这也没有奏效。
如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:1)
请按照以下步骤实现此目的
使用给定的道具
创建portal.propertieslogin.events.post = com.liferay.sample.hook.LoginActionRedirect
在liferay-hook.xml中创建条目
portal.properties
创建类LoginActionRedirect
package com.liferay.sample.hook;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
public class LoginActionRedirect extends Action {
@Override
public void run(HttpServletRequest req, HttpServletResponse res)
throws ActionException {
System.out.println("Invalidating user");
req.getSession().invalidate();
try {
//Use page URL to be redirected
res.sendRedirect(req.getContextPath()+"/web/guest/WCM");
} catch (IOException e) {
System.out.println("Something went wrong while performing IO operations");
}
}
}
将以下属性添加到portal-ext.properties文件中,以避免使用前置区域设置进行重定向
locale.prepend.friendly.url.style = 0