liferay: comment première force de déconnexion en crochet de connexion automatique

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

  •  11-10-2019
  •  | 
  •  

Question

apparantely ne Liferay enregistre pas l'utilisateur actuellement connecté si vous essayez de vous connecter à nouveau, et en fait même la garde utilisateur actuellement connecté connecté. Donc, je suis en train de forcer une fermeture de session.

J'ai essayé:

request.getSession().invalidate();

Mais cela ne semble pas fonctionner en quelque sorte la rupture en plus des fonctionnalités de connexion.

Je me demandais si quelqu'un a une autre idée comment forcer une fermeture de session.

Edit:

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

Donne noclassdeffounderrors sur cookiekeys / processorserviceutil / ... selon que je remplace avec un niveau plus bas. (Comme processorserviceutil avec un processorserviceimpl et copier le code de fonction de proeccesorserviceutil).

Était-ce utile?

La solution

1) session.invalidate () ne fonctionne que si l'authentification est gérée par la session du serveur d'applications, qui ne l'est pas;)

2), que vous utilisez Community Edition ou Enterprise, vous devriez avoir suffisamment de code source pour obtenir ce que vous voulez

3) portal-ext.properties supports connecte les chaînes, ainsi que des crochets avant et après la connexion

4) Déconnexion appelle com.liferay.portal.action.LogoutAction qui contient un tas de logique, mais sans nuire à la désinence il devrait vous donner assez pour secouer les autres parties d'authentification Liferay perdent.

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top