2012-10-06 62 views
7

這將是一個巨大的用戶體驗,保佑在我的網站的各種應用程序中進行通用登錄。目前,我有一個Magento店面和一個IPS板社區。我試圖將它們集成到我的用戶的一個通用登錄中。密碼在Magento中的儲存位置和方式?

IPS板提供了多種登錄方法,其中一個是外部數據庫,使我可以將它與外部數據庫集成以獲取用戶詳細信息。

太棒了!所以我可以將IPS與Magento的數據庫連接起來以獲得統一的用戶憑據。

但是,到目前爲止,我只能找到電子郵件字段,即customer_entity.email

我的問題是:

  1. 什麼是Magento的密碼哈希場(table.field)?
  2. Magento如何生成密碼哈希? MD5? SHA1?什麼是鹽(我猜這是不同的安裝,但我在哪裏可以找到它)?

你可以從所附的圖片看,我需要在何處以及如何Magento的存儲密碼的細節,使IPS使用Magento的數據庫作爲用戶登錄信息的外部數據庫。

附:

enter image description here

enter image description here

如何完成這件事的任何意見或建議,將不勝感激!

+0

很好的解釋是在http://www.magentogarden.com/blog/how-are-passwords-encrypted-in-magento.html – pevik

回答

8

客戶的密碼存儲在customer_entity_varchar,它是一個eav屬性。您不能使用IPB外部數據庫功能。您應該使用Mage::getModel('customer/customer')->authenticate($logi, $password);在代碼中對客戶進行身份驗證。

+1

最簡單的方法是使用magento事件customer_customer_authenticated和customer_register_success來掛接登錄/註冊操作並添加來自IPB的自定義查詢。您可以使用自動加載來使用IPB的API,或者創建自定義模型並將數據傳輸到bosrd的數據庫。另一種方法是用一個用戶實體爲所有系統製作一個複雜的數據庫登錄系統。任何標準的集成工具都無濟於事。默認情況下,密碼生成爲CE版本的md5('saltpassword')。':salt'。鹽是2個隨機字母數字字符。 –

3

您可以在/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); 

你需要在哪裏工作最好把這個邏輯爲了整合它,但這至少是一個開始。

+2

你將無法解密客戶的密碼,因爲它被哈希(默認情況下,md5在CE和SHA1中的EE版本)。加密密鑰用於加密訂單,API密鑰和第三方集成密碼中的重要數據。 –