После 2 -3 дня следствия Я добился входа и выхода с помощью ajax-звонков. Чтобы выйти из системы, это не так просто, как вызвать session.invalidate(), но настроить еще немного. Напишу, как я достиг этого:
Сначала редактировать свои portal-ext.properties и добавьте следующую строку: session.enable.phishing.protection = ложный
Тогда во всех ваших портлетов, вы должны установить private-session-attributes - false. Заказ имеет важное значение, поэтому я покажу вам мины:
<portlet>
<portlet-name>home</portlet-name>
<icon>/icon.png</icon>
<instanceable>false</instanceable>
<private-session-attributes>false</private-session-attributes>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/home.js</footer-portlet-javascript>
<css-class-wrapper>home-portlet</css-class-wrapper>
</portlet>
После этого все остальное довольно просто. Для журнала в:
public static void login(ResourceRequest request,ResourceResponse response, String liferayUser, String liferayPassword) throws Exception{
MethodKey key = new MethodKey("com.liferay.portlet.login.util.LoginUtil", "login", HttpServletRequest.class, HttpServletResponse.class, String.class, String.class, boolean.class, String.class);
PortalClassInvoker.invoke(false, key, new Object[] { PortalUtil.getHttpServletRequest(request), PortalUtil.getHttpServletResponse(response), liferayUser, liferayPassword, false, null});
}
И бревно из:
public static void logout(ResourceRequest resourceRequest) throws Exception{
HttpServletRequest request = PortalUtil.getHttpServletRequest(resourceRequest);
request.getSession().invalidate();
}
Я использовал ResourceRequest, потому что я делал Ajax звонки. Единственная «проблема» в том, что если вы вошли в систему и хотите выйти из системы &, войдите в систему с другим пользователем, которому вы должны выполнить 2 вызова ajax (второй из них один раз вернулся с первого).
Почему бы вам не сделать обычную ссылку для выхода из системы? – ewernli
Мне нужно вызвать выход из одной из моих боб. – Buzzzz
Но можете ли вы дойти до такого URL-адреса из портлета? – Buzzzz