原创作者: devilbaby   阅读:1473次   评论:0条   更新时间:2011-05-26    
 

HOWTOliferay权限开发(一)

权限控制是liferay4.0以后增加的新特性。在liferay中开发权限是一件很容易的事情,基本上都是通过定义xml来实现。

首先,我们来看看给自己的portlet加上权限控制,主要要完成以下四步操作(DRAC:

1. Define all resources and their permissions.

先定义所有所需要的权限(包括portlet resourcemodel resource

2. For all the resources defined in step 1, register them into the permission system. This is also known

simply as “adding resources.”

当定义完权限后,我们需要把权限的定义注册到权限系统中,即把权限相关信息保存到数据库中

3. Associate the necessary permissions to these resources.

把所需的permission关联到resources

4. Check permission before returning resources.

在相应的位置加上权限检验的方法

 

在解析上面四个步骤以前,有两个定义是非常重要的:

1.               Resource-在portal系统中,可以简单的认为Resource是一个个可以操作的实体对象。举个例子:一般resources包括portlets(如:Message BoardsCalendar etc),java类(如:Message Board TopicsCalendar Events etc)还有flies(如:documentsimagesetc

2.               Permission-一个个可运行的权限动作,都已经在resourcez中定义了。举个例子:“查看calendarportlet”这个权限动作已经通过resourceliferay的权限系统中定义

 

下面来简单解析一下开发权限的四个步骤:

一.Defining Resources and Actions

       默认的权限定义的xml文件放portal/portal-ejb/classes/resource-actions

我们来看看calendar的权限定义

xml 代码
  1. <resource-action-mapping>  
  2.   
  3.     <portlet-resource>  
  4.   
  5.        <portlet-name>8portlet-name>  
  6.   
  7.        <supports>  
  8.   
  9.            <action-key>ADD_EVENTaction-key>  
  10.   
  11.            <action-key>CONFIGURATIONaction-key>  
  12.   
  13.            <action-key>VIEWaction-key>  
  14.   
  15.        supports>  
  16.   
  17.        <community-defaults>  
  18.   
  19.            <action-key>VIEWaction-key>  
  20.   
  21.         community-defaults>  
  22.   
  23.        <guest-defaults>  
  24.   
  25.            <action-key>VIEWaction-key>  
  26.   
  27.        guest-defaults>  
  28.   
  29.        <guest-unsupported>  
  30.   
  31.            <action-key>ADD_EVENTaction-key>  
  32.   
  33.        guest-unsupported>  
  34.   
  35.     portlet-resource>  
  36.   
  37.     <model-resource>  
  38.   
  39.        <model-name>com.liferay.portlet.calendar.model.CalEventmodel-name>  
  40.   
  41.        <portlet-ref>  
  42.   
  43.            <portlet-name>8portlet-name>  
  44.   
  45.        portlet-ref>  
  46.   
  47.        <supports>  
  48.   
  49.            <action-key>DELETEaction-key>  
  50.   
  51.            <action-key>PERMISSIONSaction-key>  
  52.   
  53.            <action-key>UPDATEaction-key>  
  54.   
  55.            <action-key>VIEWaction-key>  
  56.   
  57.         supports>  
  58.   
  59.        <community-defaults>  
  60.   
  61.            <action-key>VIEWaction-key>  
  62.   
  63.        community-defaults>  
  64.   
  65.        <guest-defaults>  
  66.   
  67.            <action-key>VIEWaction-key>  
  68.   
  69.        guest-defaults>  
  70.   
  71.        <guest-unsupported>  
  72.   
  73.            <action-key>UPDATEaction-key>  
  74.   
  75.        guest-unsupported>  
  76.   
  77.     model-resource>  
  78.   
  79. resource-action-mapping>  
  80.   

 

首先,我们的权限定义的root Element<resource-action-mapping>,所有的权限定义都必须包含在里面

接着,我们可以看到liferay的权限定义分<portlet-resource><model-resource>两种,portlet-resource中定义的,我们可以在这里看到,

主要可以控制portlet的查看,配置权限,还有就是可以控制按钮一类设置的权限

 

model-resource的权限控制到每条记录上

xml 代码
  1. <community-defaults>  
  2.   
  3.            <action-key>VIEWaction-key>  
  4.   
  5. community-defaults>  

这里告诉我们当一个community拥有这个portlet的时候所具有的权限。

 

  1. <guest-defaults>  
  2.   
  3.            <action-key>VIEWaction-key>  
  4.   
  5. guest-defaults>  

 

guest用户可以看到这个portlet的时候默认具有的权限,这里都为查看。

 

 

  1. <guest-unsupported>  
  2.   
  3.            <action-key>ADD_EVENTaction-key>  
  4.   
  5. guest-unsupported>  

 

这里为guest用户不提供的权限

 

 

上面的这些设置的权限都可以在运行的时候修改

 

ADD_EVENT这类的定义,都已经在ActionKeys中有对应的常量定义,在二次开发的时候可以继承这个类来加入自定义的权限内容

 

在定义完权限的resource后,我们需要在default.xml中加入对应的path

 

 

xml 代码
  1. <resource-action-mapping>  
  2.   
  3.     <resource file="resource-actions/portal.xml" />  
  4.   
  5.     <resource file="resource-actions/calendar.xml" />  
  6.   
  7.     <resource file="resource-actions/communities.xml" />  
  8.   
  9.     <resource file="resource-actions/imagegallery.xml" />  
  10.   
  11.     <resource file="resource-actions/wiki.xml" />  
  12.   
  13.     <resource file="emsp-resource-actions/default.xml" />  
  14.   
  15. resource-action-mapping>  

 

Default.xml的路径在portal(-ext).properties中可以配置

resource.actions.configs=resource-actions/default.xml

 

完成的上述工作后,我们需要在liferay的权限系统中把这些信息注册到数据库中(待续)

评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics