`

liferay权限之二 permissionChecker的实现解析

 
阅读更多

版本:4.3.4企业版

1.用户所关联实体(社区、组织、用户组、角色、及他们之间的关联体):

com.liferay.portal.service.persistence.GroupFinder.countByGroupId:

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                Group_
             INNER JOIN
                Users_Groups ON
                    (Users_Groups.userId = ?)
            WHERE
                (Group_.liveGroupId = 0) AND
                (Users_Groups.groupId = Group_.groupId)
                (Group_.groupId = ?) AND
                (Group_.liveGroupId = 0)

 

2.资源及权限查找:

资源有四种范围:

对于范围是4的资源,资源的primky是业务对象的id

对于范围是2的资源,资源的primky是权限验证相关的groupid,一般是社区

对于范围是3的资源,资源的primky是GroupImpl.DEFAULT_PARENT_GROUP_ID,即0

对于范围是3的资源,资源的primky是companyId公司id

所以要查找四个范围的资源

3.权限验证:

以下是liferay默认的用户权限运算规则要权限检查的对象,对应的表很好找,使用customersql的方式查询

com.liferay.portal.service.persistence.PermissionFinder.countByGroupsRoles:

com.liferay.portal.service.persistence.PermissionFinder.countByGroupsPermissions:

com.liferay.portal.service.persistence.PermissionFinder.countByUsersRoles:

com.liferay.portal.service.persistence.PermissionFinder.countByUserGroupRole:

com.liferay.portal.service.persistence.PermissionFinder.countByUsersPermissions:

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                Groups_Roles
            INNER JOIN
                Roles_Permissions ON
                    (Roles_Permissions.roleId = Groups_Roles.roleId)
            INNER JOIN
                Permission_ ON
                    (Permission_.permissionId = Roles_Permissions.permissionId)
            WHERE
                (Roles_Permissions.permissionId=?) AND
                (Groups_Roles.groupId=?)

Union all(

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                Permission_
            INNER JOIN
                Groups_Permissions ON
                    (Groups_Permissions.permissionId = Permission_.permissionId)
            WHERE
                (Groups_Permissions.permissionId=?) AND
                (Groups_Permissions.groupId=?)

)

union all(

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                Users_Roles
            INNER JOIN
                Roles_Permissions ON
                    (Roles_Permissions.roleId = Users_Roles.roleId)
            INNER JOIN
                Permission_ ON
                    (Permission_.permissionId = Roles_Permissions.permissionId)
            WHERE
                (Roles_Permissions.permissionId=?) AND
                (Users_Roles.userId = ?)

)

union all(

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                UserGroupRole
            INNER JOIN
                Roles_Permissions ON
                    (Roles_Permissions.roleId = UserGroupRole.roleId and UserGroupRole.groupId = ?)
            INNER JOIN
                Permission_ ON
                    (Permission_.permissionId = Roles_Permissions.permissionId)
            WHERE
                (Roles_Permissions.permissionId=?) AND
                (UserGroupRole.userId = ?)

)

union all(

SELECT
                COUNT(*) AS COUNT_VALUE
            FROM
                Permission_
            INNER JOIN
                Users_Permissions ON
                    (Users_Permissions.permissionId = Permission_.permissionId)
            WHERE
                (Users_Permissions.permissionId=?) AND
                (Users_Permissions.userId = ?)

)

分享到:
评论

相关推荐

    Liferay权限相关的梳理.docx

    Liferay权限系统是一个复杂而精细的框架,它在不同版本中有所变化,但在Liferay 6.1.1和Liferay 7中保持了相似的结构。理解Liferay权限的关键在于掌握其基本概念,包括用户、用户组、角色、组织、站点以及团队。 1....

    liferay 权限文件说明

    `permissions.xml`文件是Liferay中用于定义模型对象(如用户、角色等)权限的重要文件之一。该文件通常包含一系列的权限定义,包括但不限于添加、查看、编辑和删除等操作的权限控制。下面将详细介绍`permissions.xml...

    liferay 权限文档

    权限系统是Liferay中的核心组件之一,它允许管理员精确控制用户对平台内不同资源的访问和操作权限。在“Liferay权限文档”中,我们将深入探讨这一主题。 Liferay的权限系统基于角色(Roles)、组织(Organizations...

    Liferay6.1 权限管理

    ### Liferay 6.1 权限管理深度解析 #### 一、权限管理概述 Liferay 6.1 的权限管理是一项重要的功能,它确保了门户的安全性和灵活性。权限管理主要包括用户管理、组织机构管理、站点管理和角色管理等多个方面。...

    Liferay之权限介绍2

    - Liferay通过用户-用户组-角色-Portlet的关联方式来实现权限管理,用户通过用户组获得角色,角色决定了用户对Portlet的操作权限。 - 开发者可以通过配置Portlet的权限来控制不同角色的访问,例如Admin、...

    Liferay权限开发总结

    在Liferay权限开发中,权限模型是核心概念之一。Liferay定义权限为针对特定资源的操作行为,这使得系统能够判断用户是否被授权执行特定动作。资源(Resource)是权限系统中的基本元素,它可以是Portlet、Page、...

    liferay权限

    本文将详细解析Liferay权限系统的构建机制,以及如何通过代码实现自定义权限控制,确保应用的安全性和用户访问的合理性。 ### Liferay权限系统概述 Liferay的权限模型基于角色(Role)、组织(Organization)、群组...

    Liferay Portal 创建权限

    《深入解析Liferay Portal创建权限机制》 Liferay Portal作为一款功能强大的企业级门户平台,其权限管理系统是其核心组成部分之一。本文将深入探讨Liferay Portal的权限创建机制,包括如何自定义权限系统,以及如何...

    liferay权限管理(大全)

    - **概念**:在Liferay中,角色是权限管理的核心组成部分,通过定义角色并将其分配给用户、社区、组织、地区或用户组来实现权限的控制。 - **应用场景**:例如,如果一个用户被赋予了“Administrator”角色,则该...

    liferay 权限管理

    角色配置是Liferay权限管理的核心环节之一。 ##### 3.1 Liferay角色类型 Liferay提供了多种角色类型以适应不同的应用场景,主要包括常规角色、组织角色和站点角色。 - **常规角色**:适用于整个门户的权限管理,...

    Liferay权限结构

    3. **权限分配**:权限可以分配给角色,角色再分配给用户、用户组或组织,实现权限的传递。 4. **权限覆盖**:下级角色或用户的权限可以覆盖上级的权限设定,实现更精细的控制。 Liferay权限级别的概念进一步细化了...

    Liferay Portal 二次开发指南

    #### 一、Liferay Portal 架构解析 ##### 1.1 Portal规范 Liferay Portal遵循了两种主要的门户规范:JSR 168 和 WSRP (Web Services for Remote Portlets)。JSR 168是一个Java规范请求,用于定义Portlet容器和...

    Liferay的CAS SSO实现

    在Liferay中实现SSO(Single Sign-On)单点登录功能,可以让用户在一个系统登录后,无需再次输入凭证就能访问其他关联系统,极大地提高了用户体验。其中,CAS(Central Authentication Service)是一个广泛应用的...

    Liferay Portal 权限管理

    Liferay Portal 是一款强大的企业级门户平台,其权限管理系统是其核心特性之一,用于实现对企业内部资源的精细控制。在Liferay中,权限管理涉及到企业管理、组织管理、地区管理、用户组管理和Portlet管理等多个层面...

    Liferay系统权限分配

    【Liferay系统权限分配】是Liferay Portal平台中一项核心功能,它允许管理员根据业务需求精细控制用户对系统资源的访问。Liferay的权限模型基于角色(Role)和资源(Resource),通过角色来分配和管理权限,使得权限...

    Liferay权限管理

    Liferay的权限管理提供了精细的控制,确保了不同级别的管理者和用户只能访问他们被授权的资源,从而实现了安全和效率的平衡。通过角色的定义和分配,权限管理使得企业可以根据需要灵活定制用户的访问权限,满足复杂...

    liferay二次开发指南,doc

    【Liferay Portal 二次开发指南】 在IT领域,Liferay Portal是一个开源的企业级门户平台,它提供了丰富的功能和高度的可扩展性,使得开发者能够构建复杂的Web应用和企业信息系统。本指南将深入探讨Liferay Portal的...

    liferay权限管理

    Liferay权限管理系统是Liferay Portal的核心组件之一,用于管理和控制平台内的访问控制和操作权限。在Liferay中,权限管理的基石是资源的概念,资源可以是portlet、功能按钮或其他可操作的对象。理解权限分配首先...

    liferay使用说明--管理

    本文将详细解析Liferay中的权限管理机制,包括用户管理、组织管理、角色与权限分配等方面,帮助读者深入理解并熟练应用。 #### 用户管理 在Liferay中,用户是系统的基本操作主体。用户管理主要包括: 1. **改变...

Global site tag (gtag.js) - Google Analytics