Liferay: как сначала принудительно вывести в систему в автологическом крючке

StackOverflow https://stackoverflow.com/questions/4470130

  •  11-10-2019
  •  | 
  •  

Вопрос

Посетенное 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.

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top