Konakart在Liferay上无缝登录

Konakart在Liferay上无缝登录,liferay,portlet,shopping-cart,konakart,Liferay,Portlet,Shopping Cart,Konakart,我正在尝试在Liferay上无缝登录到Konakart客户portlet,在那里我安装了两个单独的Konakart实例(使用不同的.war-文件和不同的数据库。这意味着这两个实例彼此不了解) 我所知道的是,我可能会制作一个钩子来捕捉Liferay登录事件。那之后呢?我应该写一个代码来访问Konakart,但是怎么做呢 特别的一点是,在同一Liferay上有两个Konakart实例,我不知道如何用代码将用户添加到其中一个实例中。多存储多数据库的问题 您说您有多个KonaKart部署和多个数据库 从

我正在尝试在Liferay上无缝登录到Konakart客户portlet,在那里我安装了两个单独的Konakart实例(使用不同的
.war
-文件和不同的数据库。这意味着这两个实例彼此不了解)

我所知道的是,我可能会制作一个钩子来捕捉Liferay登录事件。那之后呢?我应该写一个代码来访问Konakart,但是怎么做呢


特别的一点是,在同一Liferay上有两个Konakart实例,我不知道如何用代码将用户添加到其中一个实例中。

多存储多数据库的问题

您说您有多个KonaKart部署和多个数据库

从KonaKart文档中:

“KonaKart提供多存储功能,使您能够从单个KonaKart部署和单个数据库运行存储。”

后来它还说:

“在多存储多数据库模式下,不支持共享客户 因此,创建的用户仅被授权登录到他们自己的商店。”

如果您希望门户用户能够访问您的所有商店,并且商店之间保持同步的客户详细信息,则不建议安装多个数据库安装。但是,如果您希望不同的用户组看到不同的商店,那么您应该可以


集成Liferay与KonaKart portlet

Liferay实现了PortletRequestImpl getRemoteUser(),因此门户应该在门户和KonaKart portlet之间传递一个用户ID,该用户ID可以在portlet中使用request.getRemoteUser()访问

根据需要,您还应该能够从portlet内部从Liferay的UserServiceUtil获取其他详细信息(包括用户电子邮件)

KonaKart使用了,这意味着在应用程序的Java部分中几乎没有特定于portlet的代码(在大多数情况下,这似乎是一个典型的Struts 1.2.7应用程序)。您应该能够像往常一样使用请求和会话,让桥接器担心细节。也就是说,必须特别小心,通过使用Struts标记的Struts桥版本(支持门户),确保JSP在门户容器中工作。使用Struts桥还意味着同一应用程序可以“独立”运行(即可以直接在门户容器外部访问)

看起来Liferay和KonaKart之间的公共标识符将是客户的电子邮件地址

查看KonaKart源代码,大多数内部处理使用客户id(int),客户id通过登录方法获取,该方法将客户电子邮件和密码作为参数。您可以将所有用户的密码设置为只有portlet知道的某个秘密值,尽管这意味着您只能通过门户访问KonaKart(因为客户不知道他们在独立模式下的密码)

我看了一下KonaKart-5.5.0.2的源代码。看起来大部分有趣的代码都位于以下两个位置之一:

  • ~konakart\custom\appn\src\com\konakart\actions

  • ~konakart\java\u api\u examples\src\com\konakart\apexamples

我认为您可能需要在BaseAction中自定义loggedIn方法,以从请求中获取您的Liferay用户详细信息,并使用电子邮件地址获取客户id

您可能还希望能够以编程方式进行一定数量的客户注册。一些详细信息需要由客户设置-例如Liferay通常不保存门户用户的地址详细信息。一些最好的地方是后缀为“SubmitAction”的类,因为这些是通常在表单提交后发生的Struts操作,一些值得研究的类包括:

  • com.konakart.actions.BaseAction:特别是“loggedIn”方法,它检查我们是否登录(并返回客户id)

  • com.konakart.actions.editCustomerSubmitation:在提交“编辑客户”页面后调用,并显示如何编辑客户信息

  • com.konakart.actions.CustomerRegistrationSubmitation:在提交客户注册页面后调用,并显示如何注册客户信息

  • com.konakart.actions.ChangePasswordSubmitAction

  • com.konakart.apiexamples.GetCustomer:如果您有konakart客户的电子邮件地址,请获取其详细信息

  • com.konakart.apiexamples.RegisterCustomer:客户注册的另一个示例


我希望这有助于解决多存储多数据库的问题

您说您有多个KonaKart部署和多个数据库

从KonaKart文档中:

“KonaKart提供多存储功能,使您能够从单个KonaKart部署和单个数据库运行存储。”

后来它还说:

“在多存储多数据库模式下,不支持共享客户 因此,创建的用户仅被授权登录到他们自己的商店。”

如果您希望门户用户能够访问您的所有商店,并且商店之间保持同步的客户详细信息,则不建议安装多个数据库安装。但是,如果您希望不同的用户组看到不同的商店,那么您应该可以


集成Liferay与KonaKart portlet

Liferay实现PortletRequestImpl getRemoteUser(),因此门户应在