Liferay: cómo cerrar la sesión primera fuerza en el gancho de sesión automático

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

  •  11-10-2019
  •  | 
  •  

Pregunta

apparantely liferay no ingrese el usuario actualmente conectado si se intenta acceder de nuevo, y de hecho aún mantiene que ha iniciado sesión actualmente en el usuario ha iniciado sesión. Así que estoy tratando de forzar un cierre de sesión.

Me trató:

request.getSession().invalidate();

Pero eso no parece trabajo, además de alguna manera romper la funcionalidad de inicio de sesión.

Me preguntaba si alguien tiene alguna otra idea de cómo forzar un cierre de sesión.

Editar:

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();
            }
        }

Da noclassdeffounderrors en cookiekeys / processorserviceutil / ... dependiendo de qué puedo reemplazar con un nivel más de base. (Como processorserviceutil con un processorserviceimpl y copiar el código de función de proeccesorserviceutil).

¿Fue útil?

Solución

1) session.invalidate () sólo funciona si la autenticación es administrado por la sesión de servidor de aplicaciones, lo que no lo es;)

2), independientemente de si utiliza Comunidad o Enterprise Edition, usted debe tener suficiente código fuente para lograr lo que quieras

3) portal-ext.properties soportes entra cadenas, así como pre- y post-login ganchos

4) Salir llama com.liferay.portal.action.LogoutAction que contiene un montón de lógica, pero sin echar a perder el final hay que darle suficiente para sacudir las otras partes de autenticación Liferay pierden.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top