论坛首页 Java企业应用论坛

liferay的权限实践

浏览 3823 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-04   最后修改:2008-12-24
Liferay的权限结构(liferay版本4.3.3)
Liferay能对每个具体的portlet进行控制,也能对portlet内的实体对象进行权限控制。
Liferay中进行管理的资源分为两种:
Portlet资源和model资源。
通过liferay的管理portlet就可以可视化的实现portlet的权限管理。
如果要对portlet内的实体对象model进行管理,需要进行一些程序实现。
现以一个具体的实例来说明如何实现portlet内的model资源的权限管理:
一个报表的portlet,其中包含一个具体的报表列表。我们需要对每个具体报表进行权限控制。
建表
首先报表需要保存在数据库中,为报表建立报表数据库。根据liferay的开发过程,步骤如下:
在ext-impl文件夹下,新建service.xml,该xml文件描述报表数据表的字段信息,并指定对应的java对象。设定<entity name="AIReports" local-service="true">
进入ext-impl目录,执行命令:ant build-service。
自动生成建表的sql语句,在ext\sql\portal-tables.sql中。Copy该语句并执行,生成对应的表。
之后,liferay自动生成相应的java类和接口,根据xml文件的描述不同,生成的类会有差别,主要有如下类:
实体类,Reports
持久类,ReportsPersistence,ReportsPersistenceImpl,ReportsUtil。
LocalService类,ReportsLocalServiceImpl,ReportsLocalService,
ReportsLocalServiceUtil。.
Service类,ReportServiceImpl,ReportsService,ReportServiceUtil。
配置权限
针对portlet和报表对象,进行权限声明。
在ext-impl\resource-actions目录下,建立report.xml文件。
在该文件中,配置resource-action-mapping中的portlet-resource和
model-resource.。
并向系统指明该文件的位置。在ext-impl\portal-ext.properties中指明属性resource.actions.configs=
resource-actions/default.xml,resource-actions/default-ext.xml。
并在resource-actions/default-ext.xml文件中,指明
<resource file="resource-actions/yjreport.xml" />
实现具体权限
根据model-resource中声明的权限,在类中具体实现。针对声明的ADD,DELETE和PERMISSIONS权限,
在类ReportLocalServiceImpl中实现相应的方法。
进入ext-impl目录,执行ant build-service,为实现的方法生成对应的接口和工具类静态方法
权限验证
当权限实现后,会在操作时进行验证。验证分两部分,前台页面的按权限展现和后台执行功能时的验证。
并且对于portlet得验证,可以直接调用liferay已经实现的权限助手类,对于portlet内的model资源,则需要自己实现权限助手类
ReportPermissions。
权限助手类包含两个方法,check和contains。
check方法适用于后台验证,contains方法适用于前台验证。
前台展现时的验证方法:在jsp页面中,如果要显示对应功能的展示按钮或链接时,调用权限验证的方法contains()。
后台实现功能时验证:ReportsServiceImpl类中的每个方法都调用相应的ReportsLocalServiceUtil中的方法,并且在调用之前执行验证方法check(),以实现功能的验证。

   发表时间:2008-07-31  
在 实现具体权限 那块.

应该怎么实现呢.能具体说明一下吗
0 请登录后投票
   发表时间:2008-08-12  
实现具体权限,应该理解为实现具体的功能,这些功能是与权限对应的。这些功能主要是在通过权限验证之后进行调用。
因此具体点,比如对应添加的权限,则具体实现添加的功能。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics