【问题标题】:Where and how are passwords stored in Magento?Magento 中的密码存储在哪里以及如何存储?
【发布时间】:2012-10-06 07:58:39
【问题描述】:

如果能在我的网站的各种应用程序中实现通用登录,那将是一种巨大的用户体验。目前,我有一个 Magento 店面和一个 IPS 板社区。我正在尝试将它们集成到我的用户的一个通用登录中。

IPS 板提供多种登录方法,其中一种是外部数据库,它使我能够将其与外部数据库集成以获取用户详细信息。

太棒了!所以我可以将 IPS 与 Magento 的数据库链接起来,以获得统一的用户凭据。

但是,到目前为止,我只能找到 customer_entity.email 的电子邮件字段。

我的问题是:

  1. Magento 中的密码哈希字段(table.field)是什么?
  2. Magento 如何生成密码哈希? MD5?沙1?盐是什么(我猜它因安装而异,但我在哪里可以找到它)?

正如您从所附图片中看到的那样,我需要 Magento 存储密码的位置和方式的详细信息,以使 IPS 能够将 Magento 的数据库用作用户登录详细信息的外部数据库。

附:

任何关于如何完成这项工作的想法或建议将不胜感激!

【问题讨论】:

  • 很好的解释在magentogarden.com/blog/…
  • @pevik 链接不幸关闭了:(
  • @OSdave 没有成功,抱歉 :(。我应该复制粘贴一些信息。

标签: magento hash passwords ipb


【解决方案1】:

客户的密码存储在customer_entity_varchar,是一个eav属性。您不能使用 IPB 外部数据库功能。您应该使用Mage::getModel('customer/customer')->authenticate($logi, $password); 在您的代码中对客户进行身份验证。

【讨论】:

  • 最简单的方法是使用 magento 事件 customer_customer_authenticated 和 customer_register_success 来挂钩登录/注册操作并添加来自 IPB 的自定义查询。您可以使用自动加载来使用 IPB 的 API,或者只是创建自定义模型并将数据传输到 bosrd 的数据库。另一种方法是为所有系统制作一个具有一个用户实体的复杂数据库登录系统。任何方式标准集成工具都无济于事。对于 CE 版本,默认密码生成为 md5('saltpassword').':salt'。 Salt 是 2 个随机的字母数字字符。
【解决方案2】:

您可以在 /app/etc/local.xml 中找到加密密钥。我没有查看用户表,但我猜散列字段是加密的密码。

加密功能在 Mage_Core_Model_Encryption 中,因此如果您可以从 IPS 板访问 Magento,您可以执行以下类似操作:

$password = 'whatever'; //your logic provides this password

require_once('app/Mage.php'); //path to your Magento app/Mage.php
Mage::app(); //we can now use magento functionality

$decrypted = Mage::getModel('core/encryption')->decrypt($password);

您需要找出最好的逻辑放置位置以便集成它,但这至少是一个开始。

【讨论】:

  • 您将无法解密客户的密码,因为它是经过哈希处理的(CE 版本中默认为 md5,EE 版本中默认为 SHA1)。加密密钥用于对订单中的重要数据、api密钥和第三方集成密码进行加密。
猜你喜欢
  • 2013-07-07
  • 2023-03-14
  • 2013-02-09
  • 2011-08-02
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多