Liferay: как сначала принудительно вывести в систему в автологическом крючке
Вопрос
Посетенное Liferay не регистрирует в настоящее время регистрированный пользователя в настоящее время, если вы попытаетесь снова войти в систему, и на самом деле даже сохраняет в настоящее время регистрированный в настоящее время пользователь. Поэтому я пытаюсь внедрить вход.
Я старался:
request.getSession().invalidate();
Но это, похоже, не работает, кроме как каким -то образом нарушать функции входа в систему.
Мне было интересно, есть ли у кого -нибудь другая идея, как набрать вход.
Редактировать:
try {
HttpSession session = request.getSession();
EventsProcessorUtil.process(PropsKeys.LOGOUT_EVENTS_PRE,
PropsUtil.getArray(PropsKeys.LOGOUT_EVENTS_PRE), request, response);
String domain = CookieKeys.getDomain(request);
Cookie companyIdCookie = new Cookie(CookieKeys.COMPANY_ID,
StringPool.BLANK);
if (Validator.isNotNull(domain)) {
companyIdCookie.setDomain(domain);
}
companyIdCookie.setMaxAge(0);
companyIdCookie.setPath(StringPool.SLASH);
Cookie idCookie = new Cookie(CookieKeys.ID, StringPool.BLANK);
if (Validator.isNotNull(domain)) {
idCookie.setDomain(domain);
}
idCookie.setMaxAge(0);
idCookie.setPath(StringPool.SLASH);
Cookie passwordCookie = new Cookie(CookieKeys.PASSWORD,
StringPool.BLANK);
if (Validator.isNotNull(domain)) {
passwordCookie.setDomain(domain);
}
passwordCookie.setMaxAge(0);
passwordCookie.setPath(StringPool.SLASH);
CookieKeys.addCookie(request, response, companyIdCookie);
CookieKeys.addCookie(request, response, idCookie);
CookieKeys.addCookie(request, response, passwordCookie);
try {
session.invalidate();
} catch (Exception e) {
}
EventsProcessorUtil.process(PropsKeys.LOGOUT_EVENTS_POST,
PropsUtil.getArray(PropsKeys.LOGOUT_EVENTS_POST), request, response);
} catch (Exception e) {
try {
PortalUtil.sendError(e, request, response);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ServletException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Дает noclassdeffounderrors на печенье/ProcessorServiceUtil/... в зависимости от того, что я заменяю на более базовый уровень. (как процесс SpeckerServiceUtil с процессом SpeckServiceImpl и скопируйте функциональный код из ProcceSorserServiceUtil).
Решение
1) session.invalidate () работает только в том случае, если аутентификация управляется сеансом сервера приложений, которым он не является;)
2) Независимо от того, используете ли вы сообщество или Enterprise Edition, у вас должно быть достаточно исходного кода, чтобы достичь всего, что вы хотите
3) Portal-Ext.Properties поддерживает цепочки входа в систему, а также крючком до и пост-логин
4) Вызовы в системе com.liferay.portal.action.logoutaction, который содержит кучу логики, но не портя окончание, которое он должен дать вам достаточно, чтобы встряхнуть другие проигрышные части аутентификации Liferay.
Надеюсь это поможет.