版本: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的权限体系几经变动,不同的版本里面有不同的权限结构,下面介绍是摘自Liferay6.1.1版本里面的权限体系,经比对在Liferay7中同样适用,在介绍Liferay权限体系之前,有一些基本的概念需要了解。
Liferay6.1 权限管理功能解析.包括控制面板的权限管理功能的使用,以及自定义开发权限管理系统
liferay->permissions.xml文件说明
liferay presson开发权限文档资料描述
liferay权限管理大全,详细介绍了liferay内部的权限管理模型以及运作机制,是liferay权限开发的详细资料
Liferay之权限的设置管理,介绍大家参考
有关Liferay权限开发方面的总结
Liferay Portal 权限管理详细介绍
本文档详细的描述了liferay的权限相关的一些文档,适合学习liferay权限的人观看
liferay权限管理,非常详细的liferay后台管理权限管理
有关与liferay权限的开发,最简单的代码开发
Liferay Portal 二次开发指南,内容比较详细。
liferay的权限时序图,给大家共享一下,希望大家批评指正,沟通。
SSO单点登录,基本上是做门户系统的必备工作之一。当我们用Liferay的时候,缺省已经集成了CAS、OpenID、LDAP、NTLM、OpenSSO等单点登录的解决方案
Liferay Portal 创建权限
Liferay Portal Liferay IDE
Liferay Portal针对不同的用户会展现出不同的服务网页。当浏览Portal主页网址http://localhost:8080/时,自动转入网址http://localhost:8080/web/guest/home调出面向所有人的Guest社区公共主页。一个注册用户登录...
介绍了Liferay的权限管理方面的知识。
Liferay+权限管理.doc liferay-portal-5-2-systems-development-sample-chapter-5-managing-pages[1].pdf LiferayPortal二次开发指南.pdf liferay常用模块的简介.doc Liferay代码研读.pdf ...
asasfasdfasfasfasfasfasfdLiferay权限管理的