1、1、角色分为两种类型:(1)role_ 表存储所有角色,其中 type_ = 1 表示是常规角色, type_=2 表示是 communities角色(2)常规角色的 Actions 有:Permissions、Define Permissions、Assign Members、View Users;而社区角色的 Actions 只有:Permissions、Define Permissions;(3)对于上述几个默认的角色,我们不能修改,也不能删除;对于我们自己创建的角色,可以修改,可以删除;2、为什么 Administrator 角色不需要 Define Permissions?为什么社区
2、角色 Community Member 能够 Define Permissions,而社区角色 Community Administrator 和 Community Owner 却不能 Define Permissions?Community Administrator、Community Owner 和 Administrator(Regular Role)一样,都不能定义权限;换句话说,这三个角色的权限,不需要存储在数据库的 Roles_Permissions 表中,在权限开发的时候就已经预定义好了,并保存在 XML 文件或资源文件中,那么究竟保存在哪里?经过查找,不在资源文件中;经过查
3、找,也不在 XML 文件中,尚未解决3、比较几个默认角色下的用户情况:(1)Administrator 角色:查询语句:select * from dbo.Users_Roles where roleId = 10查询结果:(2)Guest 角色:查询语句:select * from dbo.Users_Roles where roleId = 11查询结果:(3)Power User 角色:查询语句:select * from dbo.Users_Roles where roleId = 12查询结果:(4)User 角色:查询语句:select * from dbo.Users_Roles
4、 where roleId = 13查询结果:(5)Community Administrator 角色:查询语句:select UserGroupRole.userId, Group_.name, Role_.name, Role_.type_from UserGroupRole, Group_, Role_where UserGroupRole.groupId = Group_.groupId andUserGroupRole.roleId = Role_.roleId查询结果:(6)Community Member 角色:见(5)(7)Community Owner 角色:见(6)总结:
5、(1)新增一个用户后,会默认被指派给角色:Power User 和 User,如下图所示:(2)表 Users_Roles 存储用户与 Regular Role 的信息;表 UserGroupRole 存储用户与 Community Role 的信息;4、比较几个默认角色下的默认权限情况:(1)Administrator 角色:在【Enterprise Admin】Portlet 中看不到,目前还不知道对于 Administrator 角色是如何定义权限的,定义在哪里?(2)Guest 角色:默认情况下没有任何权限,如下图所示:(3)Power User 角色:默认情况下没有任何权限,需要自定
6、义。(4)User 角色:默认情况下没有任何权限,需要自定义。(5)Community Administrator 角色:在【Enterprise Admin】Portlet 中看不到,目前还不知道对于 Administrator 角色是如何定义权限的,定义在哪里?(6)Community Member 角色:默认情况下没有任何权限,需要自定义。(7)Community Owner 角色:在【Enterprise Admin】Portlet 中看不到,目前还不知道对于 Administrator 角色是如何定义权限的,定义在哪里?5、为什么要将角色分为两类?以用户为例,试想登录后如何控制其权限
7、?(1)在 Liferay 中将角色分为 Regular Role 和 Community Role,一个用户可以被指派给一个或多个 Regular Role,也可以被指派给一个或多个 Community Role;(2)Regular Role 和 Community Role 的相同之处:定义权限(Define Permissions)的方式都是一样的;Regular Role 和 Community Role 的不同之处:第一:把角色指派给用户的方式不同,Regular Role 可以把角色指派给任何用户,而Community Role 把角色指派给用户的时候,必须先选定一个社区,换句话
8、说,只能指派给选定社区下的用户;第二:可以指派的范围不同:Regular Role 可以把角色指派给用户、组织、地区、用户组、社区等;Community Role 只能把角色指派给用户,不能指派给组织、地区、用户组、社区等。(3)一般来说,当一个用户登录系统后,查找它属于哪些 Regluar Role(见表Users_Roles)和哪些 Community Role(见表 UserGroupRole) ,通过这些角色获得权限;6、把用户指派给 Regular Role 和把用户指派给 Community Role 的方式比较:(1)把用户指派给 Regular Role通过【Enterpris
9、e Admin】Portlet,如下图所示:请注意:在【Enterprise Admin】Portlet 中,选中一个社区角色后,在此并不能像Regular Role 一样可以 Assign Members;(2)把用户指派给 Community Role通过【Community】Portlet,如下图所示:下一步,请注意:在此可选的用户都是在上一步中所选中的社区 My Community 1 下的用户。两者不同之处:(1)对于 Community Role 来说,要给用户指派一个角色,必须首先选中一个社区;对于 Regular Role 来说不需要这么做。(2)对于 Community Ro
10、le 来说,只能把社区角色指派给用户,而不能指派给组织、地区、用户组、社区;对于 Regulare Role 来说,可以把角色指派给用户、组织、地区、用户组、社区等;给社区角色指派用户:给 Regular Role Assign Member;7、比较给角色分配权限和给社区分配权限:(1)角色赋权给 Regular Role 赋权(2)角色赋权给 Community Role 赋权(3)社区赋权(误解:给组织机构赋权;正确的理解:给当前社区下的用户赋权)通过社区的【Assign User Permissions】 ,给当前社区下的用户分配权限;第一步,如下图所示:第二步,选择一个资源(Portlet) ,如下图所示:第三步:选择该社区下的用户,如下图所示:第四步:设置对资源的操作,如下图所示: