liferay配置权限

配置权限
根据之前写的user对象,进行权限声明。具体步骤如下:
(1) 在ext-impl文件夹下,新建resource-actions文件夹。
(2) 在resource-actions文件夹下,建立users.xml文件。
Xml代码:
<?xml version="1.0"?>

<resource-action-mapping>
<!--设置portlet权限-->
<portlet-resource>
<portlet-name>EXT_Users</portlet-name>
<supports>
<action-key>ADD_ENTRY</action-key>
<action-key>CONFIGURATION</action-key>
<action-key>VIEW</action-key>
<!--这里我们定义了五种权限,看,加,删,增,权限设置-->
</supports>
<community-defaults>
<!--设置成员默认所有的权限-->
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<!--设置访客默认所有的权限-->
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<!--设置访客默认所没有的权限-->
<action-key>ADD_ENTRY</action-key>
<action-key>CONFIGURATION</action-key>
</guest-unsupported>
</portlet-resource>
<!--设置model权限 目前我只用到了这个model-resource-->
<model-resource>
<model-name>com.ext.portlet.users</model-name>
<portlet-ref>
<portlet-name>EXT_Users</portlet-name>
</portlet-ref>
<supports>
<action-key>ADD_ENTRY</action-key>
</supports>
<community-defaults />
<guest-defaults />
<guest-unsupported>
<action-key>ADD_ENTRY</action-key>
</guest-unsupported>
</model-resource>
<model-resource>
<!--元素对应的class-->
<model-name>com.ext.portlet.users.model.UsersEntry</model-name>
<portlet-ref>
<portlet-name>EXT_Users</portlet-name>
</portlet-ref>
<supports>
<action-key>ADD_ENTRY</action-key>
<action-key>DELETE</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>UPDATE</action-key>
<action-key>VIEW</action-key>
</supports>
<community-defaults>
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<action-key>ADD_ENTRY</action-key>
<action-key>DELETE</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>UPDATE</action-key>
</guest-unsupported>
</model-resource>
</resource-action-mapping>
说明:里面的model-name可以在ext-impl/src/content/Language-ext.properties里面定义对应的中文名称,类似映射吧
(3) 在resource-actions文件夹下,建立default-ext.xml文件。
Xml代码
<?xml version="1.0"?>
<resource-action-mapping>
<resource file="resource-actions/users.xml" />
</resource-action-mapping>
就是把上面的users.xml导入进来
(4) 在ext-impl\portal-ext.properties中指明属resource.actions.configs=resource-actions/default.xml,resource-actions/default-ext.xml
说明:resource-actions/default.xml不能省掉,虽然default.xml在这个目录里面没有,经过验证,这个应该是指向原来工程里default.xml文件的,如果省略掉,那么原项目里面的所有权限配置都将失去,估计它是把原来的给直接覆盖掉了吧
(5) 这样子配置好之后,就可以在控制面版里对应的角色的定义权限里找到对应的portlet里面 就能看到刚才配置的信息,当然了,这个配置的信息还不能对应portlet页面的信息,因为还没有写具体的权限类。
(6) 在ext-impl/src/com/ext/portlet/users/service建permission目录,再建UserPermission.java文件
Java代码:
public class UsersPermission {

//permissionChecker.hasPermission方法的四个参数:1 社区ID、2元素 class名、3 主键、4 所操作的权限,
//要和xxx.xml中定义的权限名相同

//check方法适用于后台验证
public static void check(
PermissionChecker permissionChecker, long groupId, String actionId)
throws PortalException {

if (!contains(permissionChecker, groupId, actionId)) {
throw new PrincipalException();
}
}

//contains方法适用于前台验证
public static boolean contains(
PermissionChecker permissionChecker, long groupId, String actionId) {

return permissionChecker.hasPermission(
groupId, "com.ext.portlet.users", groupId, actionId);
}

}
说明:可以从原项目里面对应的包里面找到类似的代码,直接拷过来,其中com.ext.portlet.users要对应users.xml里面的model-name。
(7) 在ext-web/docroot/html/portlet/ext/users/下面的需要控制权限的jsp页面里,加入
<c:if test="<%= UsersPermission.contains(permissionChecker, scopeGroupId, ActionKeys.ADD_ENTRY) %>">
</c:if>
可以对一些按钮进行控制,其中ActionKeys.ADD_ENTRY要对应user.xml里面的action-key。

最后这样子完成后,就可以在控制面版->角色->定义权限->添加portlet权限,选择对应的portlet,再在里面进行配置
图表 1

重新注册一个用户,并将这个角色赋予这个用户,则以这个用户登录后,就可以测试对应的权限了。

图表 2 这是没有这个权限时的portlet


图表 3 这是当用户配置了添加条目权限后的界面,其中的提交按钮就显示出来了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值