在Liferay的基础上进行二次开发,我们都比较困惑的一个问题是:如何控制新注册用户登录后的页面?
关于新用户的缺省页面,最核心的代码是在com.liferay.portal.events.ServicePreAction类中的addDefaultLayout(User user)和getDefaultLayout(User user, boolean signedIn)。
12.1 源代码阅读
这部分代码,代码量并不大,大家可以自行阅读一下。代码的意思,大致总结如下:
1、在run()中,判断用户是否有Power User角色,如果有,则调用addDefaultLayout。
2、在addDefaultLayout中,判断用户是否已经有自己的Community,如果没有,就会读取参数 default.user.layout.name、default.user.layout.template.id等进行创建,并设置各个 column_id的portlet。
3、判断是否已经有自己的Community,实际上是在判断userGroup的Community。
4、然后,在getDefaultLayout获取应该显示的Layout。如果指定了layout,就现实制定的layout;否则,登录用户,检查有权限的私有layout;否则,检查公共layout。
从这个流程可以看出,可以从几个角度来入手解决这个问题:
1、 从用户角色入手,不给新用户Power User角色。
2、 通过配置文件,设置新用户的layout,以及各个column的portlet清单。
3、 大动手术,直接重载ServicePreAction类
12.2 从用户角色着手解决的方案
在Enterprise这个Portlet中,选择"用户"这个Tab,然后是Default Community And Roles,里面,把Power User删掉,并保存。
然后重新注册的用户,缺省就不会创建新的Community。同时,又没有分配其他Community给他,因此他只有一个Guest这个Community是可用的,登陆之后也会回到缺省页面。
这种方案适用于:普通登录用户没有其他的功能,主要还是在Guest这个Community。www.liferay.com应该就是采用这种处理方式。
考虑到多数情况下,除了公共页面,我们还需要给用户一些私有的页面。这时,我们可以创建一个私有的Community如Blog,在这个Community 中创建若干的Layout,并且添加好portlet。作为设计的所有注册用户的缺省登录后的页面。然后,管理员在Enterprise这个 Portlet中,选择"用户"这个Tab,然后是Default Community And Roles,里面,在Community这个Textarea里面,输入把Blog这个Community名字,并保存。
这样,新注册的用户,登陆之后,就会显示Blog这个Community。
这个方案的关键设置,就是在Default Community And Roles里面。两点:一、新注册用户缺省没有Power User权限;二、新注册用户,缺省可以访问设置的私有Community。
12.3 从配置文件着手解决的方案
在portal.properties中有几个重要的配置参数,分别是
default.user.layout.name=Home
default.user.layout.template.id=2_columns_ii
default.user.layout.column-1=82,23,61,65,
default.user.layout.column-2=8,11,36,33,
default.user.layout.column-3=
default.user.layout.column-4=
default.user.layout.name,暂时没看其作用,估计没有太大的影响。我们关心的应该是后面两类参数:
default.user.layout.template.id:页面的布局
default.user.layout.column-?:每一个column中有哪些portlet。具体含义,自己开发过Layout的话,就很容易理解。
我们的工作也就相对简单了,只需要定制这两个参数即可。比如,我想在第二栏的最开始,放一个Calculator Portlet,那只需要设置为
default.user.layout.column-2=13,8,11,36,33,
注意:Liferay不建议我们直接修改portal.properties文件,因此需要把这些参数拷贝到portal-ext.properties中进行修改。
这个方法的问题也比较明显:对于哪些需要设置Preference才能正常工作的portlet,这种方法就不好使。比如ID为56的Portlet "Journal Content",是Liferay的使用最频繁的portlet,但这种方法,不能为其设置所选择的文章。这个问题,我没有找到比较好的解决方法。
曾经尝试在配置文件中直接写portlet的实例名,但不成功,仍然是未设置状态。
这个方案适用于:每个用户需要有自己的工作台,并且工作台的内容并不是以内容呈现为主。
12.4 重载ServicePreAction类的方案
这个方案,应该是最灵活的一个方案了,当然对开发技术以及对Liferay的底层知识有较高要求。有兴趣的可以自行研究,我仅简单说说如何重载。
1、 在 ext环境中创建一个新类,并派生自ServicePreAction。然后重新实现方法addDefaultLayout(User user)。在里面做自己想做的任何事情。例如新类的全名为com.ext.portal.events.ServicePreExtAction
2、 在portal-ext.properties中添加一行
servlet.service.events.pre=com.ext.portal.events.ServicePreExtAction
Liferay的案例EducaMadrid,"Germinus was able customize the look and feel of the portal according to the user's hierarchal role and/or grade. Teachers have a "desktop" that displayed classroom materials, and students would see more student oriented UI. As the students progressed to higher grades, the actual interface becomes increasingly more complex",我猜测,应该就是采用了重载ServicePreAction的方法,为不同的角色或年级,设置不同的页面样式。
转自:http://blog.csdn.net/sumongh_pan/archive/2007/03/29/1545639.aspx
分享到:
相关推荐
1. **添加登录面板时的 SQL 语句解析**:当向系统中添加新的登录面板时,Liferay 的后台会执行一系列 SQL 语句来确保新添加的资源被正确地注册并且具有适当的权限设置。 - **第一条 SQL 语句** (UPDATE Layout): ...
开发者可以通过编程接口来处理用户注册、认证和授权,以满足企业特定的需求。 9. **社交和协作** Liferay集成了社区和协作功能,如论坛、博客、即时消息。开发者可以利用这些API增强门户的社交特性。 10. **移动...
liferay学习 liferay页面 Noname2.jsp
- **Portal 页面**:Liferay Portal 的页面由多个 Portlet 组成,用户可以根据需求定制页面布局和内容。 #### 二、Liferay Portal 的使用 本部分主要介绍了 Liferay Portal 的安装、用户管理、内容与布局管理等...
在这个额外研究中,我们将探讨如何在新的Tomcat服务器上部署Liferay Portal以及其Portlet。 首先,了解Portlet的部署过程至关重要。Liferay Portal使用portlet.xml、liferay-portlet.xml和liferay-display.xml这三...
在这个项目中,我们将探讨如何使用CAS 4.2.4版本与Liferay 6.2及以上版本的数据库集成,以便在用户登录时通过验证Liferay的用户表来确认用户身份。 Liferay是一款开源的企业级门户平台,提供内容管理、社交网络和...
2. **portlet开发**:通过Liferay Ext,开发者可以创建新的portlet,这些portlet可以是独立的应用程序,显示在Liferay门户上,为用户提供特定的功能或者交互界面。 3. **服务层扩展**:Liferay的Service Builder...
Liferay Portal Liferay IDE
最后,文件名“7.7、7月6日liferay”可能是指Liferay的一个特定版本或某个主题的讲解,这可能涵盖该版本的新特性、性能优化、API变更等内容。Liferay的每个版本都有其独特的改进和增强,理解这些变化对于开发者来说...
Liferay Portal 数据库是指Liferay Portal系统中存储的所有数据,包括用户信息、组织结构、页面布局、portlet配置等。下面将从数据库的角度来介绍Liferay Portal 的页面布局和相关知识点。 Layout 表 Layout 表是...
文档中提到的"Layout"表是Liferay用来存储页面布局和设置信息的核心数据表之一,对于开发和自定义Liferay门户非常关键。 首先,"Layout"表用于存储企业中所有社区的页面设置和布局信息。所谓社区,在Liferay中包括...
首先,"liferay_portal6.doc"可能是关于Liferay 6.x版本的详细介绍,该版本是Liferay的一个重要里程碑,引入了许多新特性,如改进的用户体验、增强的安全性和性能优化。学习这个文档将帮助开发者理解Liferay的基础...
- **用户管理:**Liferay提供了全面的用户管理工具,包括用户账户创建、权限分配等功能,便于组织对访问者和内部员工进行有效管理。 - **主题更换:**通过Liferay的外观管理功能,用户能够自定义网站的主题和布局,...
4. **Content Management System (CMS)**:Liferay内置的CMS允许用户创建、编辑和发布内容。 5. **User Management**:强大的用户管理和权限系统,支持角色分配和细粒度的访问控制。 6. **Social Collaboration**:...
本文档主要关注的是Liferay数据库中的表结构,特别是涉及到社区、组织、地区、用户组、用户与角色之间关系的部分。 首先,我们要了解的是`Groups_Roles`表。这个表是Liferay中用于存储不同层级的群体(社区、组织、...
5. **自定义和扩展**:Liferay和CAS的集成还支持自定义和扩展,比如自定义CAS的登录页面、添加额外的认证方式或者对特定用户组进行特殊处理。 SSO的实现不仅可以提升用户体验,还有助于提高安全性,因为用户不需要...
通过使用这些 JAR 文件,开发者可以快速地访问和集成 Liferay 的核心功能,如用户管理、组织结构、权限控制等。 三、.ivy 文件 .Ivy 文件是 Apache Ivy 的配置文件,Ivy 是一个依赖管理工具,类似于 Maven 的 POM....
portal 页面是用户与 Liferay Portal 互动的入口。portlet 生命周期管理是 Liferay Portal 的核心机制,负责管理portlet 的生命周期。 第二部分:Liferay Portal 的使用 Liferay Portal 安装 Liferay Portal 的...