Liferay新注册用户缺省页面的研究

在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的方法,为不同的角色或年级,设置不同的页面样式。

Liferay新注册用户缺省页面的研究相关推荐

  1. 安卓案例:注册用户免启动时的广告页面

    安卓案例:注册用户免启动时的广告页面 非注册用户启动安卓应用时,会首先弹出一个广告页面,停留一分钟,然后关闭进入主界面.注册用户就可以免掉广告页面的骚扰.下面我们通过简单的案例来说明如何实现这样一个效 ...

  2. WordPress发布新文章Email通知注册用户

    很多WordPress博客都开放了用户注册的功能,用户可以参与到博客的内容建设当中来,也就是一个博客由多个用户来写.现在有这样的需求,如何实现在某一个用户发表文章后,其他用户都能收到Email通知?下 ...

  3. Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名

    #1.打war包 1)命令:jar -cvf xx.war * (备注:执行打包的前提条件:目录必须切换到打包项目的webRoot(webContent)目录下) 备注:1. c:创建新的文档v:显示 ...

  4. Zoom暂停中国个人用户注册,已免费注册用户仅限于加会使用

    5月19日,据国外媒体报道,视频会议平台Zoom已经暂停中国个人用户注册. ▲图片截至zoom.com.cn首页 如图所示,Zoom目前暂停了中国新用户注册,而已有的免费注册用户将从5月1日零时起仅限 ...

  5. Web.config中注册用户控件和自定义控件

    在ASP.NET 的早先版本里,我们通过在页面的顶部添加 <%@ Register %> 指令来引入和使用自定义服务器控件和用户控件时,象这样: <%@ Register TagPr ...

  6. 小新计算器用户使用协议

    小新计算器用户使用协议 感谢您使用小新计算器app.当您按照注册页面提示填写信息.阅读并同意本协议且完成全部注册程序后,即表示您已充分阅读.理解并接受本协议的全部内容,并与我们达成一致,成为我们的用户 ...

  7. beego model获取controller_Goweb开发-Beego框架实战教程:项目搭建及注册用户

    一.搭建项目 首先打开终端进入gopath下的src目录,然后执行以下命令,创建一个beego项目: bee new myblogweb 运行效果如下: 然后通过goland打开该项目: 我们打开co ...

  8. bilibili怎么用用户名登录_b站(bilibili)注册用户数量总共有多少?如何通过uid搜索用户名?...

    一.b站注册用户数量多少的分析 B站拜年祭播放量近一千五百万,这里定义为B站活跃用户.截止现在8.20,B站总注册量为3亿6147万左右,去除许多因素估计B站用户有3亿人.所以B站目前可以说有3亿用户 ...

  9. 黑马旅游网-注册用户(二)

    目录 一.注册用户-业务流程分析 1.页面效果 2.业务流程分析 二.注册用户-前端功能实现 修改register.html 1.校验用户名 2.校验密码 3.检验邮箱 4.使用ajax提交数据 5. ...

最新文章

  1. Java封装OkHttp3工具类
  2. 区块链相关论文研读2 - vChain,关于可验证的查询
  3. 拉勾教育专栏文章转markdown
  4. mysql 5.6 cmake 安装_Cmake MySQL5.6 编译安装
  5. 学习《apache源代码全景分析》之存储段和存储段组摘录
  6. 全国教学交流研讨会“教学为本”主题总结
  7. How do I enable core dumps for everybody
  8. java 控件汉字显示方格
  9. ON_EVENT 报错
  10. CF949 简要题解
  11. 【windows屏幕扩展】把你多余屏幕利用起来,spacedesk屏幕扩展超低延迟解决方案
  12. nvivo三天写论文!可视化操作实战
  13. YOLOv3学习——锚框和候选区域
  14. 主码、候选码与外码的区别
  15. asp.net监听输入框值的即时变化onpropertychange、oninput
  16. Unity 制作愤怒的小鸟
  17. linux搭建泰拉瑞亚(Terraria)服务器
  18. 走进麻省理工Media Lab,看AR技术如何改变课堂教育?
  19. This beta version of Typora is expired,please download and install a newe最新解决方案
  20. 网络安全工程师待遇 网络安全工程师需要学什么

热门文章

  1. DataEase看中国:数据呈现中国农业经济发展情况
  2. 基于Python的工厂模式学习总结
  3. 超级计算机使用什么操作系统,多数超级计算机使用操作系统为Linux
  4. 兔八哥笔记13:我的2003
  5. HiveServer2 频繁宕机根本原因分析
  6. ug10许可证错误一8_企业ISP许可证年检时要注意哪些问题
  7. PMPtiku项目管理第六版项目经理的领导力风格
  8. 黑超级计算机,超级计算机模拟太阳黑子真面目(图)
  9. 分享一个强大资源网站整合
  10. 论文学习:Lip Reading-Based User Authentication Through Acoustic Sensing on Smartphones