2010-12-17 4 views
4

다시 로그인을 시도하면 실제로 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(); 
      } 
     } 

이 cookiekeys/processorserviceutil에 noclassdeffounderrors을 제공합니다/... 내가 더베이스 레벨로 교체에 따라. (processorserviceutil과 processorerviceimpl을 같이 사용하고 proeccesorserviceutil에서 함수 코드 복사). 인증이 그렇지 않은 응용 프로그램 서버 세션에 의해 관리되는 경우

답변

-1

1) session.invalidate는()에만 작동)

2)에 관계없이 커뮤니티 또는 Enterprise Edition 사용 여부, 충분한 소스를 가지고 있어야 코드는 당신이

3) portal-ext.properties 원하는대로 달성하기 위해 로그인 체인뿐만 아니라 사전 및 사후 로그인 후크

을 지원

4) 로그 아웃이 들어있는 com.liferay.portal.action.LogoutAction 호출 논리의 낱단 그러나 결말을 버릇 없게 기르기없이 그것은 다른 Liferay authen를 동요하는 당신을 충분히 주어야한다 부품이 손실됩니다.

희망이 도움이됩니다.

+0

나는 그 길을 가고 있지만, PropsValues를 사용하려고하면 다음과 같은 결과가 나옵니다. java.lang.NoClassDefFoundError : com/liferay/portal/util/PropsValues ​​왜 이런 일이 일어 났는가? (나는 갈고리 경로에 갈거야) – jack

+0

PropsValues는 portal-impl에 패키지되어 있고 ext 프로젝트 (Liferay 6으로 가정)가 필요할 수도 있지만 확인해야 할 것이다. LR6 및 Eclipse를 사용하는 경우 help> market> liferay 검색에서 사용할 수있는 Eclipse 플러그인을 사용하는 것이 좋습니다. 마법사는 훌륭합니다. –

+0

후크에 ext 플러그인과 동일한 액세스 권한이 있다고 생각합니까? 그리고 나는 liferay eclipse plugin을 사용하여 고리를 만들었다. 이것이 그 클래스를 포함하는 항아리를 추가했기 때문에 나는 혼란 스럽다. (liferay 6.0.5) – jack

관련 문제