2014-07-18 97 views
1

我對Magento做一個POC的知識有限,因爲他正在爲他的商店使用Magneto。根網站是在一個自定義的PHP網站,沒有登錄。Magento從自定義的PHP站點登錄

現在我想通過自定義php站點(根站點)來集成登錄腳本,所以當用戶點擊用戶名和密碼(從根站點的形式),他們將成功登錄,並創建Magento會話就像Magneto的(我想使用Magento的「admin_user」表,一個單一的登錄系統)。

我的問題是我必須使用Magneto用戶名和密碼這個自定義登錄PHP網站。我儲存了Magneto Password加密。

更多的澄清:假設該網站是在「的htdocs /站點A」和Magento的店是「的htdocs /站點A /店/」

所以當站點A用戶,並希望從站點A做登錄他將自動loged到Magento的商店站點B :)

我POC

error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors',1); 

Mage::setIsDeveloperMode(true); 
Mage::app("default"); 

Mage::getSingleton('core/session', array('name' => 'frontend')); 
$customer = Mage:: getModel("customer/customer"); 
$customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 

//login writes to $_SESSION 
//login($username, $password); 

$customer->loadByEmail('[email protected]'); 
$session = Mage::getSingleton("customer/session"); 
$x=$session->loginById($customer->getId()); 
$session->setCustomerAsLoggedIn($customer); 

if(isset($_SESSION['foo'])){ 
    echo"hi"; 
    $_SESSION['foo'] = "I'm in uo r session."; 

} else { 
    echo 'No foo yet; refresh!'; 
} 

如何加密用戶密碼的Magento或任何其他方式?

+0

Magento使用MD5加密嘗試加密您的客戶密碼MD5,如果您還有任何疑問,請讓我知道 –

回答

0

在磁登錄表單發送到客戶控制器,它座落於

MAGENTO_ROOT/app/code/core/Mage/Customer/controllers/AccountController.php 

首先,我們瀏覽一下數據庫中的數據來獲得客戶的‘密碼’的直觀視圖:66982d945e975796f1de141eb5848fde:3噸(我們在「admin_user」表中使用管理員密碼作爲示例)。它看起來像一個MD5散列,它確實是一個MD5散列,但是含鹽。

public function loginPostAction() { 
    .... 
    $session->login($login['username'], $login['password']); 
    .... 
} 

變量$ session是Customer Module的Session類的一個實例。在登錄功能中,認證功能將被調用。最後,可以在Mage_Core_Model_Encryption類中找到問題的答案。

public function hash($data) { 
    return md5($data); 
} 

public function validateHash($password, $hash) { 
    $hashArr = explode(':', $hash); 
    .... 
    return $this->hash($hashArr[1] . $password) === $hashArr[0]; 
.... 
} 

數據庫中的冒號正好是哈希密碼和鹽的分隔符;