2014-01-07 90 views
0

用戶A ---->有 「XYZ」 的角色,有 「ABC」 作爲主站點用戶B ----> 有 「PQR」 的角色,有 「DEF」 作爲主站點Liferay自定義登陸頁面還是最後一個路徑?

無論何時用戶A登錄,我需要將他重定向到「ABC」網站而不是默認的訪客站點。 無論何時用戶B登錄,我需要將他重定向到站點「DEF」而不是默認的訪客站點。

通過鉤子我已經實現了這個

鉤屬性: login.events.post = com.mytest.portal.events.MyLoginPostAction

然後在MyLoginPostAction我已經檢查了用戶角色,然後將他重定向到相應的站點。

現在,假設用戶A已經訂閱了該網站的任何一個博客。他收到一封包含該博客鏈接的電子郵件。

用戶A已註銷,然後他試圖通過直接鏈接訪問該博客。由於用戶A未登錄,他被重定向到登錄頁面。 登錄後,他被重定向到網站「ABC」,而不是去那個博客。這是由於我將用戶重定向到主頁。

那麼,如何才能做到這一點scenarioes即當用戶嘗試訪問博客頁面中再沒有登錄日誌時,他應該去那個博客頁面,當用戶只是嘗試登錄到門戶網站那麼他應該重定向到家庭網站。

+0

有趣!如果任何頁面被直接擊中,您可以根據您的重定向網址使用Liferay的默認登錄機制來實現此目的,否則將根據用戶角色對其進行過濾。 –

+0

將LoginAction.java重寫爲插件環境並通過代碼進行調試,並在執行方法中添加過濾器邏輯。 –

+0

@Parkash Kumar:我可以將用戶重定向到他的主頁,但是當用戶點擊他們在訂閱特定博客後在電子郵件中獲得的鏈接時,此功能會添加一個障礙。因此,我很想知道是否有任何方法可以識別如果登錄請求僅用於登錄,而不是查看訂閱或資產,如博客 – suyash

回答

1

您可以通過 request.getSession().getAttribute("LAST_PATH")

得到lastpath對象在動作類,並根據從lastpath對象路徑值,你可以決定重定向到哪裏。

+0

LoginPostAction鉤子中的最後一個路徑屬性僅給出您的登錄portlet所在的路徑,而不是請求所源自的路徑。 例如。如果您已註銷,然後嘗試訪問說測試網站的說測試頁,所以它會將您重定向到登錄頁。現在,如果您在訪客網站的主頁上有您的登錄portlet,那麼LoginPostAction中的最後一個路徑將是/ guest/home而不是/測試/測試我需要的,以便我可以確定這不是默認登錄,我只需將用戶轉發到他的主站點。 – suyash

0

通過必要的直接鏈接登錄,Liferay將正向路徑設置爲url參數。也許你可以從請求中讀取redirect參數並決定是否轉發到特定頁面。

+0

Yup mark我只遵循這種方法。現在邏輯在我的本地環境中爲我工作。但是當我使用liferay的自動登錄功能進行測試時,它並沒有將它轉發到我通過hook設置的默認登錄頁面。 – suyash

+0

您使用自動登錄功能?你有開發一個嗎? – Mark

+0

是的,我正在使用自定義自動登錄 – suyash