转自:http://blog.csdn.net/hantiannan/article/details/6741992
要在自己的portlet中客户化定义Liferay的权限的话,需要做四步工作。
1. 定义所有的资源和他们的权限。
2. 在权限系统中注册在第一步中定义的所有的资源。
3. 对资源分配必要的权限。
4. 在程序中需要使用资源的地方先判断权限。
下面以blog为例。
1. 首先是资源和权限的定义。参考/liferay-portal-src-6.0.X/portal-impl/src/resource-actions/blogs.xml文件。
<?xml version="1.0"?>
<resource-action-mapping>
<portlet-resource>
<portlet-name>33</portlet-name>
<permissions>
<supports>
<action-key>ACCESS_IN_CONTROL_PANEL</action-key>
<action-key>ADD_TO_PAGE</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>ACCESS_IN_CONTROL_PANEL</action-key>
<action-key>CONFIGURATION</action-key>
</guest-unsupported>
</permissions>
</portlet-resource>
<model-resource>
<model-name>com.liferay.portlet.blogs</model-name>
<portlet-ref>
<portlet-name>33</portlet-name>
</portlet-ref>
<permissions>
<supports>
<action-key>ADD_ENTRY</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>SUBSCRIBE</action-key>
</supports>
<community-defaults />
<guest-defaults />
<guest-unsupported>
<action-key>ADD_ENTRY</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>SUBSCRIBE</action-key>
</guest-unsupported>
</permissions>
</model-resource>
<model-resource>
<model-name>com.liferay.portlet.blogs.model.BlogsEntry</model-name>
<portlet-ref>
<portlet-name>33</portlet-name>
</portlet-ref>
<permissions>
<supports>
<action-key>ADD_DISCUSSION</action-key>
<action-key>DELETE</action-key>
<action-key>DELETE_DISCUSSION</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>UPDATE</action-key>
<action-key>UPDATE_DISCUSSION</action-key>
<action-key>VIEW</action-key>
</supports>
<community-defaults>
<action-key>ADD_DISCUSSION</action-key>
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<action-key>ADD_DISCUSSION</action-key>
<action-key>DELETE</action-key>
<action-key>DELETE_DISCUSSION</action-key>
<action-key>PERMISSIONS</action-key>
<action-key>UPDATE</action-key>
<action-key>UPDATE_DISCUSSION</action-key>
</guest-unsupported>
</permissions>
<social-equity>
<social-equity-mapping>
<action-key>ADD_DISCUSSION</action-key>
<information-value>2</information-value>
<information-lifespan>365</information-lifespan>
<participation-value>2</participation-value>
<participation-lifespan>365</participation-lifespan>
</social-equity-mapping>
<social-equity-mapping>
<action-key>ADD_ENTRY</action-key>
<information-value>10</information-value>
<information-lifespan>365</information-lifespan>
<participation-value>5</participation-value>
<participation-lifespan>365</participation-lifespan>
</social-equity-mapping>
<social-equity-mapping>
<action-key>VIEW</action-key>
<information-value>1</information-value>
<information-lifespan>365</information-lifespan>
<participation-value>1</participation-value>
<participation-lifespan>365</participation-lifespan>
</social-equity-mapping>
</social-equity>
</model-resource>
</resource-action-mapping>
2. 把文件关联到系统
这个文件中设置好支持的动作和不支持的等后,在/liferay-portal-src-6.0.X/portal-impl/src/resource-actions/default.xml把自己生成的文件加入。
<resource-action-mapping>
<resource file="resource-actions/portal.xml" />
<resource file="resource-actions/announcements.xml" />
<resource file="resource-actions/asset.xml" />
<resource file="resource-actions/blogs.xml" />
//。。。。。
</resource-action-mapping>
3. 权限算法
liferay有6种权限算法。这个地方可以使用共通的默认处理。在客户化的过程不需做特别处理。
4.添加资源到数据库的方法
使用ResourceLocalServiceUtil类中的addResources方法来做这个工作。这个地方也是共通做的处理。
public void addResources(
String companyId, String groupId, String userId, String name,
String primKey, boolean portletActions,
boolean addCommunityPermissions, boolean addGuestPermissions);
BlogsEntryLocalServiceImpl中的实际调用例:
ResourceLocalServiceUtil.addResources(
entry.getCompanyId(), entry.getGroupId(), entry.getUserId(),
BlogsEntry.class.getName(), entry.getEntryId(),
false, addCommunityPermissions, addGuestPermissions);
5. 添加权限到数据库的方法
权限的添加方法是系统共通做的,在客户化portlet中不需要做任何处理。
6.设置权限的方法
比如要在自己的jsp画面加个链接设置做设置权限的处理的。可以参照下面的写法。
<liferay-security:permissionsURL
modelResource="<%= BlogsEntry.class.getName() %>"
modelResourceDescription="<%= entry.getTitle() %>"
resourcePrimKey="<%= entry.getPrimaryKey().toString() %>"
var="entryURL"
/>
<liferay-ui:icon image="permissions" url="<%= entryURL %>" />
7. 权限判断的使用
例:blog中有没有写文章的权限判断方法
if (!permissionChecker.hasPermission(scopeGroupId, “com.liferay.portlet.blogs.model”,scopeGroupId, ”ADD_ENTRY”)) {
throw new PrincipalException();
}
blogsEntryLocalService.addEntry(...);
这样liferay的权限系统的东西就基本上了解了。对权限部分的改造很有帮助的。
相关推荐
Portlet之间的通信--- Liferay 内部Portlet通信-Liferay中的示例Portlet 示例:从Portlet A输入标题,并使用Portlet B在同一页面上显示标题。
**Liferay Portlet SDK 5.2.3详解** Liferay Portlet SDK 是 Liferay Portal 平台的一个重要组成部分,它为开发者提供了构建、部署和管理portlet所需的所有工具和技术支持。Liferay Portlet SDK 5.2.3是该系列的一...
在Liferay中,跨页面Portlet之间的调用与数据传递是一项关键任务,因为这涉及到不同Portlet间的协作和信息共享。Liferay提供了多种通信机制,包括PortletSession、Public Render Parameters以及Portlet事件,但这些...
- **Portlet间通信**:通过JSR-286的`PortletSession`或Liferay的`Event`机制,实现不同Portlet间的协作。 - **RESTful服务**:创建Portlet API,以JSON或其他格式暴露数据,供其他应用或Portlets调用。 总之,理解...
8. **Liferay服务和API**:了解Liferay提供的各种服务,如用户管理、角色权限、内容管理等,以及如何通过API集成这些服务到portlet中。 9. **portlet的国际化(i18n)**:学习如何使portlet支持多种语言,提供全球...
Liferay Portal提供强大的角色和权限系统,开发者可以为portlet设置访问控制,如只允许特定用户组查看或操作。 9. **Internationalization (i18n)** Liferay支持多语言,portlet开发时应考虑国际化,通过资源文件...
Liferay5.2.3的样例,通过war.bat打包后发布到相应的liferay环境即可。 另外,需要配置context,tomcat中的代码如下: </Context>
liferay portlet例子 liferay portlet例子
【标题】"liferay-spring-portlet"是一个基于Spring框架构建的portlet应用,适用于Liferay门户平台。这个项目展示了如何将Spring与Liferay Portal结合,创建一个可直接部署到Liferay中的WAR包。作者提到他们已经花费...
Liferay的特点在于其强大的portlet容器,portlet是一种可重用的Web组件,可以集成到门户页面中,为用户提供定制化的功能。 Alfresco则是一个强大的企业内容管理系统(Enterprise Content Management, ECM),它涵盖...
【Liferay Portlet 对象详解】 在 Liferay 平台中,Portlet 是核心组件,它负责呈现内容和提供互动功能。Portlet 技术的理解和应用是开发 Liferay 应用程序的关键。本文将深入解析 Portlet 的关键概念,包括 ...
8. **安全与权限控制**:作为Liferay的一部分,GIS Portlet也继承了Liferay的权限管理系统,可以设置不同用户或用户组对地图数据的访问权限。 9. **可扩展性**:基于Java和Liferay的插件架构,GIS Portlet易于扩展...
1. Portlet:JSR-168中的核心组件,它是一个小型的Web应用程序,可以嵌入到门户页面中,提供特定的功能。Portlet可以处理HTTP请求,生成HTML响应,并且能够与其他portlet协同工作。 2. Portlet容器:执行portlet的...
在IT领域,特别是企业级应用开发中,Liferay作为一个强大的企业门户平台,提供了丰富的功能和服务,其中Liferay Portlet的开发是构建定制化企业应用的关键技术之一。本文将基于提供的文件信息,深入解析Liferay ...
Liferay Spring Portlet MVC 使用 Maven 的 Liferay Spring Portlet MVC 项目模板。 Liferay EE 6.2.10.11 (GA1, SP710) Java 1.7 小门户 2.0 弹簧框架 4.1.5 基于注解的控制器配置 用法 $ git clone ...
### Liferay Portlet 开发详解 #### 一、概述 Liferay是一款开源的企业级内容管理系统(Content Management System, CMS),主要用于构建企业门户站点。在Liferay中,Portlet是一种用于显示内容和服务的应用程序组件...
Portlet遵循JSR 286标准,确保了跨平台的兼容性和可移植性。在Liferay中,portlet的开发极为灵活,支持Java、JavaScript等多种技术栈,满足多样化的开发需求。 ### 三、为何选择Liferay? Liferay作为一款成熟的...
【标题】:“Liferay Portlet Demo” 在Liferay Portal中,Portlets是可重用的Web组件,它们为用户提供交互式功能。"Liferay Portlet Demo"是一个示例项目,旨在展示如何在Liferay环境中开发、部署和使用portlet。...
例如portlet生命周期、portlet渲染机制、portlet间通信(JSR-286的ResourceRequest和ResourceResponse)、portlet的缓存策略、portlet的国际化处理、portlet的安全性设置,以及如何使用Liferay的工作流API等。...