Liferay之权限Word下载.docx

上传人:b****6 文档编号:18941055 上传时间:2023-01-02 格式:DOCX 页数:13 大小:381.02KB
下载 相关 举报
Liferay之权限Word下载.docx_第1页
第1页 / 共13页
Liferay之权限Word下载.docx_第2页
第2页 / 共13页
Liferay之权限Word下载.docx_第3页
第3页 / 共13页
Liferay之权限Word下载.docx_第4页
第4页 / 共13页
Liferay之权限Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Liferay之权限Word下载.docx

《Liferay之权限Word下载.docx》由会员分享,可在线阅读,更多相关《Liferay之权限Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

Liferay之权限Word下载.docx

这是后话,今后在开发相关的文章中再讨论。

如果理解了上面关于Resource、Scope和Action,接下去我们就可以讨论Liferay中如何进行设置,将Permission和User联系起来从而将权限赋予某人。

首先说最简单的Individual类型的Resource的配置方法。

如果以管理员身份登录系统,那么在任何一个portlet的右上角都有一个齿轮图标,点击该图标后选择Permissions标签就可进行该portlet得配置。

假设我们以管理员身份登录后切换到supportCommunity,对MessageBoards权限进行配置。

新出现的页面第一排中如果选择Users、Organizations、Locations、UserGroups,下方还将出现Current和Available。

Current中是当前已经配置的结果,Available是可供选择的人员、机构的列表。

我们选择User->

Available->

TestHKG1上打钩。

点击UpdatePermissions。

将所有权限都选择到Current下。

配置后再查看Users->

Current,现在TestHKG1已经在Current下了。

使用test.hkg.1@账户登录系统,可以看到Support下的MessageBoards上出现了配置图标。

而且有AddCategory按钮。

然后看一下如何配置其他scope的权限。

首先以管理员身份登录系统,将EnterpriseAdmin添加到页面上。

选择Roles,添加一个Role名称为SupportMBAdmin,选择Delegate。

在portlet列表中选择MessageBoards,随后将Configuration后的Scope选择为Community,Next->

选择Support->

Finish。

随后使用SupportMBAdmin的assign,将TestHKG2选中。

使用test.hkg.2@账户登录系统,可以看到Support下的MessageBoards上出现了配置图标。

hkg.1和hkg.2有什么区别呢?

hkg.1获得的是Individual的Resource。

只有这个Portlet是可以允许他配置的。

hkg.2获得的是supportCommunity下任一个MessageBoards的配置权限。

最后要说明的是,个人页面上的Portlet的Permission配置是没有意义的。

因为其他人不能查看你的页面,也就无法配置了。

写得不错,不过liferay的权限更加强大,还有对model的权限配置,精确到单条记录

利用liferay对权限开发也比较容易,写法也很固定,大家可以试试

 

HOWTO:

liferay权限开发

(一)

权限控制是liferay4.0以后增加的新特性。

在liferay中开发权限是一件很容易的事情,基本上都是通过定义xml来实现。

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

1.Defineallresourcesandtheirpermissions.

先定义所有所需要的权限(包括portletresource和modelresource)

2.Foralltheresourcesdefinedinstep1,registerthemintothepermissionsystem.Thisisalsoknown

simplyas“addingresources.”

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

3.Associatethenecessarypermissionstotheseresources.

把所需的permission关联到resources上

4.Checkpermissionbeforereturningresources.

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

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

1. 

Resource-在portal系统中,可以简单的认为Resource是一个个可以操作的实体对象。

举个例子:

一般resources包括portlets(如:

MessageBoards,Calendar,etc),java类(如:

MessageBoardTopics,CalendarEvents,etc)还有flies(如:

documents,images,etc)

2. 

Permission-一个个可运行的权限动作,都已经在resourcez中定义了。

“查看calendar的portlet”这个权限动作已经通过resource在liferay的权限系统中定义

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

一.DefiningResourcesandActions

默认的权限定义的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. 

CONFIGURATIONaction-key>

12. 

13. 

VIEWaction-key>

14. 

15. 

16. 

17. 

community-defaults>

18. 

19. 

20. 

21. 

22. 

23. 

guest-defaults>

24. 

25. 

26. 

27. 

28. 

29. 

guest-unsupported>

30. 

31. 

32. 

33. 

34. 

35. 

36. 

37. 

model-resource>

38. 

39. 

model-name>

com.liferay.portlet.calendar.model.CalEventmodel-name>

40. 

41. 

portlet-ref>

42. 

43. 

44. 

45. 

46. 

47. 

48. 

49. 

DELETEaction-key>

50. 

51. 

PERMISSIONSaction-key>

52. 

53. 

UPDATEaction-key>

54. 

55. 

56. 

57. 

58. 

59. 

60. 

61. 

62. 

63. 

64. 

65. 

66. 

67. 

68. 

69. 

70. 

71. 

72. 

73. 

74. 

75. 

76. 

77. 

78. 

79.resource-action-mapping>

80. 

首先,我们的权限定义的rootElement为<

,所有的权限定义都必须包含在里面

接着,我们可以看到liferay的权限定义分<

和<

两种,portlet-resource中定义的,我们可以在这里看到,

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

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

5.community-defaults>

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

5.guest-defaults>

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

5.guest-unsupported>

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

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

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

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

resource 

file="

resource-actions/portal.xml"

/>

resource-actions/calendar.xml"

resource-actions/communities.xml"

resource-actions/imagegallery.xml"

resource-actions/wiki.xml"

emsp-resource-actions/default.xml"

15.resource-action-mapping>

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

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

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

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继承的是StrutsAction.在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由于不是由strutsAction而是GenericPortlet扩展而来,所以在访问的时候没有通过PortalRequestProcessor,所以其内部明确调用了liferay的权限管理代码:

PermissionCheckerchecker=

PermissionThreadLocal.getPermissionChecker();

由上面我们所分析的几个简单的portlet来看,以后在进行portlet开发时有2种选择,当逻辑比较少时,我们可以象IFramePortlet一样,通过对StrutsPortlet的继承完成。

当业务逻辑比较复杂时(多个路径),采用Struts进行路径配置时,最好同Announcements一样,通过继承PortletAction来将自身开发的portlet纳入liferay的权限管理框架中。

CMS视图:

明显,这个层进行文档管理,用过Guest视图就可以知道门户的所有的新闻文章都在journal中进行管理,对它的使用网上有很多很有用的文章,多用几次也就熟悉了,强大的文本、图像编辑功能可以就近使用而不再用自己编码,肯定也是很愉快的了:

Support视图:

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

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对象。

设定<

entityname="

AIReports"

local-service="

true"

>

进入ext-impl目录,执行命令:

antbuild-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和

mode

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1