以 Magento 为主,并创建单点登录以与其他第三方软件集成

Posted

技术标签:

【中文标题】以 Magento 为主,并创建单点登录以与其他第三方软件集成【英文标题】:Using Magento as the main, and creating a single sign on to integrate with other third party software 【发布时间】:2012-08-25 08:10:30 【问题描述】:

这是我长期以来一直在努力的事情。它首先从 Prestashop 开始,作为与我需要为整个网站制作的其他脚本或拼图的集成。我目前仍在使用 Prestashop 作为我的网上商店,但后来改用 Magento。

我改用 Magento 是因为它具有复杂的灵活性,而且总体而言我认为它是最好的解决方案、最好的支持和最好的整体电子商务脚本。

话虽如此,我在 Prestashop 遇到的同样问题似乎是相同的,我将继续尝试将事物完美和谐地整合在一起的任何方面。

我有 Magento 设置,作为网站的主要部分,在 Magento 的子文件夹中,我将 Wordpress 安装在一个名为“articles”的文件夹中,我还使用 FluxBB 作为我的消息论坛,因为它很简单有一堆我不太关心的臃肿的额外功能,它们位于一个名为“论坛”的子文件夹中。

从这一点,我们知道 Magento、Wordpress 和 FluxBB 都有自己的用户管理方式;创建、管理和跟踪它们。

我想要做的是找到将这三个和更多组合在一起的最佳方式,以使我的网站尽可能顺畅和实用。在给才华横溢、乐于助人的 Alan Storm 发了电子邮件后,他告诉我,他所知道的最佳解决方案是进行他们都指向的第三方用户管理,并管理客户身份验证。我确实相信他的想法可能是最好的,但我想将其发布在 *** 上,我也可能将其发布在 Magento 上,以广泛了解喜欢挑战的 magento 开发人员和聪明人。

我有几个想法,一个都行不通,有些可能行不通,或者一个可能只是可行的。但首先让我告诉你我到目前为止所取得的成就。我已经完成了必要的步骤来整合我的页眉和页脚的整体设计,所以基本上 Wordpress 和 FluxBB 被包装并包含在 Magento 的外部设计层中。因此,话虽如此,我也已经做到了 Magento 将通过说“Hello Guest”或“Hello User”来检查会话以查看用户是否登录到 Magento。这就是我停下来的地方,因为我超出了我的深度并需要帮助,无论是我们出于纯粹的挑战而共同创造的东西,还是有人说如果我付钱他们会帮助我,无论哪种方式我都喜欢完成。如果当我得到代码时,我是否愿意通过为团队工作付费的方式来免费提供代码,以供其他人在他们自己的项目中使用该概念。


脑子放屁#1:

调整 Wordpress 和 FluxBB 的用户表,使其更符合 Magento 的结构,如密码和用户名/电子邮件登录部分。其余字段可以分别保持原样用于帖子计数等。

从那里,我想弄清楚当客户从注册中创建时,Magento 中的哪个类将实际输入到数据库中。当我找到该代码时,我想扩展将用户凭据复制到 Wordpress 和 FluxBB 数据库中其他两个表中的能力。如有必要,它可以只是向 Wordpress 和 FluxBB 添加几个字段,如果这似乎是一个更好的主意,是的,我的意思是 Magento 创建的实际加密密码,我也希望它是安全的。

从那里,当我们知道客户在 Magento 注册时,数据被复制到其他两个表中,那么我们至少取得了进展,这个进展是否真的有效,还有待确定。

然后,我们以任何我们可以从 Wordpress 和 FluxBB 的方式禁用登录/注销和注册链接,因为它们将不再需要,因为我们希望用户通过 Magento 一个位置注册、登录和注销。

然后是我眼中有趣的部分,在他们订购产品、查看 wordpress 文章并可能离开 cmets、发送给朋友等时,在整个网站上保持该死的会话……以及发布主题、回复FluxBB容量等。

对我来说,这是创建字段或添加来自 Magento 客户注册的数据的地方,我可以检查他们是否已经登录到 Magento,从那里我们可以让它自我验证.这可能是过度杀戮,或者这可能只是它需要完成的方式。但对我来说,如果凭据位于所有三个数据库中,那么它们应该能够通过更改 Wordpress 和 FluxBB 中的代码或添加代码来进行验证。是的,我知道如果客户希望更改他们的信息,我们还必须对个人资料编辑和密码编辑做一些事情。

但这是我对此的第一个想法,无论这是否是正确的决定,我想听听这里的人的广泛知识,他们比我在 Magento、php 和其他一切方面拥有更多的经验和知识。


脑子放屁#2

由于 Magento 的复杂性以及它的整体设置方式,这个不合逻辑的想法在我看来完全是一种延伸。

但我们的想法是删除/编辑 Wordpress 和 FluxBB(以及任何其他第三方软件),以几乎忽略它自己的注册、登录、注销、编辑方法,并向 Magento 寻求它的凭据和建立新客户。基本上使它们成为 Magento 的超大模块。

我只知道 Magento 的设置方式是模块化的,它的复杂性似乎需要更多的编码和故障排除才能做到这一点。


脑屁#3

转储 Wordpress 和 FluxBB,并查看 Magento Connection Store 中的模块,这些模块几乎具有我需要的所有功能,并且可以向它们添加缺少的功能,并且不会在尝试集成第三方软件时遇到麻烦。

我喜欢 Wordpress,我认为用一个模块来复制它,至少在我花了几个小时查看与 CMS/新闻相关的所有可用模块之后是一个艰难的决定。 FluxBB 我可以接受或离开它,如果有人有一个已经可行的解决方案来使用 phpBB 或 vBulletin 或 SimpleMachines,我会选择他们。我宁愿它是免费的开源软件,不是因为我是一个便宜的滑板,而是因为我尽可能地支持开源。


脑放屁#4

这可以是一个 cookie,但只有在它们允许 cookie 时才有效,或者可以以某种方式添加到会话中以允许事物通过,但 Magento 设置不同的会话或也允许你,因此它们会在每个会话中崩溃其他所以这可能根本不是一个想法,也可能是一个想法。


我知道我没有给出我尝试过的事情的示例,我查看过的文件或与之相关的任何内容,我很抱歉,我提供了一些相关的链接,但到目前为止没有找到与我想要完成的内容相匹配的链接。而且我试图将一些有趣的灾难性结果合并在一起。

链接示例?: http://www.magentocommerce.com/wiki/doc/webservices-api/api/customer#customer.create http://www.magentogarden.com/blog/how-are-passwords-encrypted-in-magento.html http://www.nicksays.co.uk/magento_events_cheat_sheet/ http://www.magentocommerce.com/wiki/5_-_modules_and_development/customers_and_accounts/registration_fields How to access Magento customer's session from outside Magento?

在这方面的任何帮助都会很好,我正在尝试同时处理网站的多个部分,这很麻烦,我会说每个人都会觉得很难或觉得很难。有人喜欢挑战吗? :)

--------- 编辑:

我已经让 Magento 和 Wordpress 与 CodeCanyon 网站上的 James Kemp 模块完美协作(Magento 和 Wordpress 的单点登录),我将对其进行调整以适用于 FluxBB 或我所做的任何其他事情。

只是传递信息...我看到这是被编辑的,不知道被编辑了什么并且不在乎。只是传递我在发布后发现的信息。

【问题讨论】:

这是一本关于问题的小说——如果你曾经在任何地方写过一篇关于你的进步的博客文章,请在此处发布链接! 很有趣,看看你是如何解决这个问题的。不久前我们在讨论如何解决这个问题(虽然只是在 wp 和 magento 之间),但并没有真正想出解决方案。我得把这个传下去。谢谢! en.wikipedia.org/wiki/Single_sign-on 这就是为什么创建 OpenID 和 Facebook connect 来帮助解决同样的问题,但规模更大。 符合专门针对 wordpress 的“Brain Fart #1” - 当用户创建 Magento 帐户时,您可以使用相同的电子邮件/密码实用地创建 wordpress 帐户:tommcfarlin.com/create-a-user-in-wordpress。然后,只要他们使用 Magento 登录,您也可以务实地将他们登录到 wordpress:codex.wordpress.org/Function_Reference/wp_signon 【参考方案1】:

我正在管理/自定义 magento+vanilla 论坛+在 Yii 框架中制作的自定义应用程序的组合。用户在应用程序之间“共享”。这两个链接都不好。正如 Alan 已经回复您的那样,正确的 SSO 将使用外部用户数据库/管理器。但是,并不是每个人都愿意重新编写三个应用程序,只是为了每周发布 1 篇论坛帖子和每月 1 篇博客文章来使用 magento。所以我们的选择就更少了。首先,如果您不想(很可能不想)重写正在更新和维护的已编写的开源项目的很大一部分,然后根据定期更新(您想要它们)维护您的更改,那么您必须将用户数据复制到三个数据库中。除非您适应的项目有某种方法可以将用户数据作为插件或外部模块进行管理。 AFAIK 你的选择都没有。

那么,如何实现呢?假设您选择 Magento 作为万事万物之母,您需要它导出一个 API 进行身份验证,这可能在使用 cookie 和 javascript 的浏览器上工作,但这相当棘手,或者您可以使用它的前端 cookie 来验证执行服务器的会话-来自子应用的服务器 API 请求。就“经典”SSO 而言,这是首选选项。从技术上讲,当您的用户打开论坛或博客时会发生什么,相应的应用程序会检测 magento 的 cookie 并检查会话是否有效以及用户是谁。如果找到用户,他的数据将被复制到博客或论坛表中。然后,您需要使用新创建的用户记录在博客或论坛应用程序上启动经过身份验证的会话。

到目前为止一切都很好,但还有一些工作。您需要在子应用程序中禁用用户配置文件管理或对其进行修改,以便 Magento 中保存的数据始终是正确的,并且您需要发明一些东西来将 Magento 的用户配置文件表示同步到孩子。最好连接到 Magento 的事件,因此每次用户更改他的个人资料时,数据都会在儿童应用程序中更新。但还有另一个。您可能希望保留一些特定的数据应用程序,论坛上的显示名称不是 Magento 的 FirstName+LastName 所必需的,有些人希望将其保密。

以上只是我能回忆起的关于保持它运行的有趣事实。当然,我还遗漏了许多其他内容,或多或少是具体的。但希望我的评论能帮助你放屁。

我们已尝试评估其他选项,但没有重复数据的任何选项似乎都太昂贵而无法实施或维护。也许以后。有预算和时间。

【讨论】:

以上是关于以 Magento 为主,并创建单点登录以与其他第三方软件集成的主要内容,如果未能解决你的问题,请参考以下文章

从 MVC 4 到 .Net Core 应用程序的单点登录

「单点登录与权限管理」系列概述

自定义模块仅允许Magento 1.9中的完全管理员权限

单点登录

单点登录| LDAP 协议

如何以与 Windows 服务不同的用户身份运行进程