2010-11-04 94 views
3

我正在尝试为liferay创建自定义登录portlet,因为我还需要执行其他一些操作,例如日志记录。然而,我偶然发现的问题是,portal-impl.jar似乎被屏蔽掉了,所以我不能使用loginutil类。 现在我不想修改实际登录的工作方式,所以这很糟糕。 我读过一些关于能够使用类似ext的东西(解释非常模糊),但看起来并不像最干净的解决方案。liferay以编程方式登录

我在开发portlet方面有一些经验,但我是在为liferay开发的新手。

回答

2

创建一个“ext插件”,因为它被称为是解决您的问题的最佳方法。 This part的文档应该是您的第一步。

首先,您应该在portal.properties中标识要修改的属性:是管道中的另一个自动登录项还是由登录操作触发的操作。我经常使用第一个用于自定义SSO操作,而后者用于审计目的。

然后用您的自定义类创建一个ext插件(​​例如,扩展loginutil)并创建嵌入引用它所需的portal-ext.properties。

这样,你应该可以有一个干净的包来部署和取消部署;自定义登录portlet的jsps也可以完成。

Arnaud

+0

你好,当我回家时我会试试这个。这对我来说似乎有点奇怪,尽管当你甚至不想修改他们的某个类(只想访问LoginUtil类)时,它必须使用这种方法。关闭portal-impl.jar的原因让我感到有些不解。 – jack 2010-11-04 12:37:46

+0

portal-impl.jar仅包含内部实现细节 - 没有API承诺,这意味着实现可以在没有通知的情况下更改。你不想依赖这个来做特定的事情,并且想要验证它仍然做你认为它应该在更新后应该做的事情。 – 2010-11-09 06:11:14

1

为什么要使用LoginUtil类?

如果你真的只想添加登录到登录,你可以创建一个登录后挂钩。该钩子将拦截每个用户登录,以便您可以执行自定义逻辑,例如添加用户信息的某些日志记录。

这种方法的优点是您的代码与Liferay完全分离。

+0

因为我将使用令牌服务对用户进行身份验证,但我仍然希望将它们登录到门户上。 – jack 2010-11-05 07:32:53