Liferay Portal的权限框架采用声明式配置,类似Service Builder。您可以在XML文件中定义所有的权限,这些权限被称为default.xml。(叫别的名字也行)。然后,在代码中的以下位置实现权限检查:
- 视图层,当显示链接或按钮以保护功能时
- Action,在执行受保护的Action之前
- Service,在调用local service之前
首先要定义好权限。考虑应用程序的用例,以及如何控制对该功能的访问:
- Add Guestbook button 仅允许管理员使用。
- Guestbook选项卡应该通过权限进行过滤,这样管理员就可以控制谁可以看到它们。
- 为了防止匿名用户发送垃圾留言,添加条目按钮只允许站点成员可用。
- 用户可对自己的条目设置权限。。
现在可以创建权限配置了。应用程序中的对象(如Guestbook
和Entry
)被定义为resource,resource actions管理用户如何与这些资源进行交互。因此,有两种权限:portlet权限和资源(或模型)权限。Portlet权限保护 global functions,例如Add Entry。如果用户没有访问该 global functions的权限,他们就失去了一个portlet权限。资源权限保护对象访问,如Guestbook和Entry。用户可能拥有查看一个条目、查看和编辑另一个条目的权限,并且可能无法访问第三个条目。这取决于资源权限。
图1:Portlet权限和资源权限涵盖了应用程序的不同部分。
第一件事是告诉框架权限在哪里定义:
- In
guestbook-service
’ssrc/main/resources
folder, create a file calledportlet.properties
. - In this file, place the following property:
resource.actions.configs=META-INF/resource-actions/default.xml
该属性定设置权限定义文件的名称和位置。
接下来,创建权限文件:
- In the
META-INF
folder, create a subfolder calledresource-actions
. - Create a new file in this folder called
default.xml
. - Click the Source tab. Add the following
DOCTYPE
declaration to the top of the file:
<?xml version="1.0"?>
<!DOCTYPE resource-action-mapping PUBLIC "-//Liferay//DTD Resource Action
Mapping 7.0.0//EN" "http://www.liferay.com/dtd/liferay-resource-action-mapping_7_0_0.dtd">