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视图:这个视图也是其他用户(非管理员用户)登陆后的定制页面,由管理员进行定制,主要操作和上面一致。