2010-12-17 34 views
4

如果您嘗試重新登錄,並且實際上甚至使當前登錄的用戶登錄,那麼Apparantely 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)不管你是否使用社區版或企業版,你應該有足夠的源代碼實現任何你想要的

3)portal-ext.properties支持登錄鏈以及前和登錄後鉤

4)註銷調用com.liferay.portal.action.LogoutAction含有一堆的邏輯,但不破壞結局,它應該給你足夠的動搖其他Liferay認證部分零件丟失。

希望這會有所幫助。

+0

我要走這條路線,但試圖使用PropsValues得到我:java.lang.NoClassDefFoundError:com/liferay/portal/util/PropsValues任何想法爲什麼發生這種情況? (我正在尋找鉤子路線) – jack 2010-12-20 10:04:33

+0

PropsValues包裝在portal-impl中,可能需要一個ext項目(假設Liferay 6),但我需要檢查。如果您使用的是LR6和eclipse,我強烈建議使用可從幫助>市場>搜索liferay獲得的Eclipse插件。奇才很棒。 – 2010-12-20 10:39:51

+0

我認爲鉤子和ext插件有相同的訪問權限嗎?我使用liferay eclipse插件來創建鉤子。這就是我爲什麼添加一個包含該類的jar的困惑。 (liferay 6.0.5) – jack 2010-12-20 11:28:20