liferay2.6下的权限体系以及权限处理方法

 liferay里面所有的东西都被视为资源,权限和资源挂钩主要涉及到2个表:
     1、resourcepermission:资源权限表,此表定义了liferay里面的权限结构,表结构主要的字段如下:
         name:资源对象的描述,如果资源描述的是一个portlet对象,则为这个portlet对象的portletId。如果是一个class,则为带包名的class全                                 
               称;
         scope:权限的作用域,值有1、2、3、4;
                 1代表company级,就是实例;
                 2代表group级,就是站点级;
                 3代表站点模板;
                 4是没有级别,就是当前的。
         primkey:资源的id
         roleid:角色id
         ownerid:资源属于哪一个人,一般值为0或者创建用户的id;
         actionids:这里的actionids为resourceaction表里面的bitwisevalue的值想加之和;
    2、resourceaction:资源动作表,此表定义了liferay中的相应资源上可执行的动作有哪些,表结构主要字段如下:
         name:定义可资源的类型,同上面的表一样,确定资源是portlet还是实体或者其他,表示是什么资源;
         actionid:可执行的动作名称,这里主要是为我们的动作起一个名字,如添加,查看等;
         bitwisevalue:这个定义为上面可执行动作的位值,也可以看做权限动作的id;
    所以我们如果要判断bitwisevalue的值是否在actionids里面,只需要2个做位与算,actionids|bitwisevalue是否等于bitwisevalue即可。
    
liferay中的权限判断方法和获取、修改方法:
    liferay提供了现有的权限处理方法类ResourcePermissionLocalServiceUtil,下面介绍一下这个类的一些权限方法:
        1、权限判断方法:hasResourcePermission(companyId, name, scope, primKey, roleId, actionId)
                companyId = com.liferay.portal.util.PortalUtil.getDefaultCompanyId();
                role = com.liferay.portal.service.RoleLocalServiceUtil.getRole(companyId, "Site Member");
 
                // some layout plid
                layoutPlid = 10174;
                name = "com.liferay.portal.model.Layout";
                roleId = role.getRoleId();
                actionId = "VIEW";
 
                primKey = layoutPlid;
                scope = com.liferay.portal.model.ResourceConstants.SCOPE_INDIVIDUAL;
                hasIndividualPermission = com.liferay.portal.service.ResourcePermissionLocalServiceUtil.hasResourcePermission(companyId, name, scope, primKey, roleId, actionId);
 
         2、修改权限方法:updateResourcePermission(ResourcePermission perm)
                long companyId = themeDisplay.getCompanyId();
                Role role = com.liferay.portal.service.RoleLocalServiceUtil.getRole(companyId, "Owner");
                String name = DLFolder.class.getName();
                long primKey = savedFolder.getFolderId();
                int scope = com.liferay.portal.model.ResourceConstants.SCOPE_INDIVIDUAL;
 
                ResourcePermission perm = ResourcePermissionLocalServiceUtil.getResourcePermission(companyId, name, scope, String.valueOf(primKey), role.getRoleId());
                perm.removeResourceAction("VIEW");
                ResourcePermissionLocalServiceUtil.updateResourcePermission(perm);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值