资源描述
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?
为什么社区角色Community Member能够Define Permissions,而社区角色Community Administrator和Community Owner却不能Define Permissions?
Community Administrator、Community Owner和Administrator(Regular Role)一样,都不能定义权限;换句话说,这三个角色的权限,不需要存储在数据库的Roles_Permissions表中,在权限开发的时候就已经预定义好了,并保存在XML文件或资源文件中,那么究竟保存在哪里?
经过查找,不在资源文件中;
经过查找,也不在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 where roleId = 13
查询结果:
(5)Community Administrator角色:
查询语句:
select UserGroupRole.userId, Group_.name, Role_.name, Role_.type_
from UserGroupRole, Group_, Role_
where UserGroupRole.groupId = Group_.groupId and
UserGroupRole.roleId = Role_.roleId
查询结果:
(6)Community Member角色:见(5)
(7)Community Owner角色:见(6)
总结:
(1)新增一个用户后,会默认被指派给角色:Power User和User,如下图所示:
(2)表Users_Roles存储用户与Regular Role的信息;
表UserGroupRole存储用户与Community Role的信息;
4、比较几个默认角色下的默认权限情况:
(1)Administrator角色:
在【Enterprise Admin】Portlet中看不到,目前还不知道对于Administrator角色是如何定义权限的,定义在哪里?
(2)Guest角色:
默认情况下没有任何权限,如下图所示:
(3)Power User角色:
默认情况下没有任何权限,需要自定义。
(4)User角色:
默认情况下没有任何权限,需要自定义。
(5)Community Administrator角色:
在【Enterprise Admin】Portlet中看不到,目前还不知道对于Administrator角色是如何定义权限的,定义在哪里?
(6)Community Member角色:
默认情况下没有任何权限,需要自定义。
(7)Community Owner角色:
在【Enterprise Admin】Portlet中看不到,目前还不知道对于Administrator角色是如何定义权限的,定义在哪里?
5、为什么要将角色分为两类?以用户为例,试想登录后如何控制其权限?
(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把角色指派给用户的时候,必须先选定一个社区,换句话说,只能指派给选定社区下的用户;
第二:可以指派的范围不同:Regular Role可以把角色指派给用户、组织、地区、用户组、社区等;Community Role只能把角色指派给用户,不能指派给组织、地区、用户组、社区等。
(3)一般来说,当一个用户登录系统后,查找它属于哪些Regluar Role(见表Users_Roles)和哪些Community Role(见表UserGroupRole),通过这些角色获得权限;
6、把用户指派给Regular Role和把用户指派给Community Role的方式比较:
(1)把用户指派给Regular Role
通过【Enterprise Admin】Portlet,如下图所示:
请注意:在【Enterprise Admin】Portlet中,选中一个社区角色后,在此并不能像Regular Role一样可以Assign Members;
(2)把用户指派给Community Role
通过【Community】Portlet,如下图所示:
下一步,请注意:在此可选的用户都是在上一步中所选中的社区My Community 1下的用户。
两者不同之处:
(1)对于Community Role来说,要给用户指派一个角色,必须首先选中一个社区;对于Regular Role来说不需要这么做。
(2)对于Community Role来说,只能把社区角色指派给用户,而不能指派给组织、地区、用户组、社区;
对于Regulare Role来说,可以把角色指派给用户、组织、地区、用户组、社区等;
给社区角色指派用户:
给Regular Role Assign Member;
7、比较给角色分配权限和给社区分配权限:
(1)角色赋权――给Regular Role赋权
(2)角色赋权――给Community Role赋权
(3)社区赋权――(误解:给组织机构赋权;正确的理解:给当前社区下的用户赋权)
通过社区的【Assign User Permissions】,给当前社区下的用户分配权限;
第一步,如下图所示:
第二步,选择一个资源(Portlet),如下图所示:
第三步:选择该社区下的用户,如下图所示:
第四步:设置对资源的操作,如下图所示:
经过测试,给用户分配权限不成功,表Users_Permissions和表Groups_Permissions都没有变化;
8、为什么可以把Regular Role指派给用户、组织、地区、用户组、社区,而对于Community Role却只能指派给用户,不能指派给组织、地区、用户组、社区?
暂时无法解答
9、为什么一个用户加入一个社区后,会自动加入默认的社区角色Community Member,见表UserGroupRole;
为什么一个组织、地区、用户组加入社区后,不会自动加入默认的社区角色Community Member?见表OrgGroupRole
暂时无法解答
10、如何看一个用户拥有哪些角色?如何将一个用户退出某个角色?
(1)看一个用户拥有哪些角色:
参见下述内容。
(2)将一个用户退出某个角色有两种方式:
方式一:在【Enterprise Admin】Portlet的【Roles】标签页中选定角色,点击【Assign Members】,选中用户,点击【Update Associations】,如下图所示:
方式二:在【Enterprise Admin】Portlet的【Users】标签页中选定用户,在【Actions】中选定【Edit】,选定一个角色后,点击【Remove】即可退出该角色,如下图所示:
11、Liferay中角色的继承关系
(1)Liferay中的角色不存在继承关系;
(2)Liferay中角色的继承通过Group来体现,所以不考虑Role的继承关系,但Role可以与相关的Group相关联,便于授权。
12、存在的疑问:
(1)用户可以扮演多个角色,即用户可以被指派给多个角色,将某一角色授予某一用户后,用户的权限不能超越角色的权限,但可以小于该角色的权限。对此不太明白。
展开阅读全文