Liferay的授權與內容管理
本節主要內容是Liferay的授權操作以及內容管理,在介紹授權早作的同時將結合上一篇的內容,探討程序背后的執行流程,也會凸現出在進行自己的portlet開發時所要注意的權限相關代碼,為portlet的開發打下基礎。
liferay-portal-4.1.2的權限管理主要有2部分構成:
1.user的部門歸屬
2.對單個portlet的授權
超級用戶登陸系統后,將進入超級用戶的管理界面,管理界面總共有Guest、Private、CMS、Support 四層組成,即在Myplace中的4種視圖, 現對其進行介紹.
Guest視圖:主要管理普通用戶的所訪問的主頁內容,在此視圖中可以管理展現在主頁上的各個portlet,管理portlet中展現的內容以及portlet的展現形式以及方位。Portlet的內容管理放在稍后的視圖中詳細講解,portlet的方位以及顯示形式后可以通過頁面上直接的拖放進行設置。
默認情況下,我們所列的portlet就是匿名用戶所看到的門戶,在每個portlet的設置中,我們還看到了權限的設置,可以將這個portlet的配置,查看等權限(每個portlet的權限不相同,每個都有配置、查看權限,但是有個復雜的portlet如用戶管理的就有更多的如添加用戶、刪除用戶等權限)授予用戶,這里權限的授予分6級,直接授予用戶,授予組織、授予地點、授予用戶群、授予社群和授予客人(用戶群和社群是自定義的)。Liferay的用戶機制為公司—地點—組織—個人,所以授予某一高級的組,下掛的用戶將都會自動獲得權限。在我的應用中,我將WIKI加入了門戶首頁,同時將察看與刪除授予匿名用戶,所以,首頁就擁有了一個大家參與修改的區域WIKI了!
Private 視圖:這個是超級用戶的私人界面,這里特別分析了幾個簡單portlet的權限管理的實現。
HelloWorldPortlet。位置Test->helloworld 這個portlet是最簡單的一個展示,而且僅僅只有view的功能,所以這個權限管理就是能否在用戶的視圖中顯示就行了,代碼中的權限代碼無,只是由layout調用HelloWorldPortlet。注:這里是通過設置直接調用HelloWorldPortlet,沒有經過Struts框架,所以代碼直接繼承GenericPortlet,不能由路徑訪問。
Announcements。位置,這個portlet中訪問路徑由struts配置文件指定,這個portlet代碼ViewAction繼承PortletAction,PortletAction繼承的是Struts Action.在portlet.xml中,
<name>view-action</name>
<value>/wiki/view</value>
指定了這個portlet的view所調用的路徑,portal容器會根據struts的配置調用指定的Action。在進行action調用時,很顯然通過了Liferay擴展的PortalRequestProcessor(上一篇提到),也就進行了權限檢查。配置Announcements的路徑在liferay-portlet.xml中配置,為/announcements/edit_configuration,同樣這也是一個struts路徑,她的權限管理也同view一樣,在PortalRequestProcessor中完成。
IFramePortlet。這個portlet也是一個簡單標簽的使用例子。在這個portlet中,與HelloWorldPortlet相同,也沒有Struts的路徑配置,而是直接在portlet.xml中定義了接受請求的Action,所繼承的StrutsPortlet由于不是由struts Action而是GenericPortlet擴展而來,所以在訪問的時候沒有通過PortalRequestProcessor,所以其內部明確調用了liferay的權限管理代碼:
PermissionChecker checker =
PermissionThreadLocal.getPermissionChecker();
由上面我們所分析的幾個簡單的portlet來看,以后在進行portlet開發時有2種選擇,當邏輯比較少時,我們可以象IFramePortlet一樣,通過對StrutsPortlet的繼承完成。當業務邏輯比較復雜時(多個路徑),采用Struts進行路徑配置時,最好同Announcements一樣,通過繼承PortletAction來將自身開發的portlet納入liferay的權限管理框架中。
CMS視圖:明顯,這個層進行文檔管理,用過Guest視圖就可以知道門戶的所有的新聞文章都在journal中進行管理,對它的使用網上有很多很有用的文章,多用幾次也就熟悉了,強大的文本、圖像編輯功能可以就近使用而不再用自己編碼,肯定也是很愉快的了:)
Support視圖:這個視圖也是其他用戶(非管理員用戶)登陸后的定制頁面,由管理員進行定制,主要操作和上面一致。