liferay: comment première force de déconnexion en crochet de connexion automatique
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).
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.