2014-11-18 4 views
0

Я новичок в magento, но задал задачу создать пользовательский api с аутентификацией администратора. Я закончил с api, но застрял в аутентификации администратора. главная проблема, с которой я столкнулся, заключается в том, что: пароли в magento зашифрованы md5, и я не знаю, что с этим делать. Помощь в этом отношении будет рассмотрена. мой код аутентификации ниже:Programmatically login admin in magento

общественная функция indexAction() {

require_once 'app/Mage.php'; 
umask(0); 
$app = Mage::app('default'); 
$array = $_GET; 
$username = $_GET['username']; 
$password = $_GET['password']; 
Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$user = Mage::getModel('admin/user')->loadByUsername($username); // user your admin username 
$user_id = $user->getId(); 
// echo $user_id; 
if(($user->getId())>=1) 
{ 
    echo "User Name: True"; 
    echo "<br>"; 
    $dbpassword = $user->getData('password'); 
    // echo $dbpassword." ---- "; 
    // echo md5($username.$pass).":".$username; 
    // echo "<pre>"; 
    // $a = Mage::helper('core')->validateHash($password, $dbpassword); 
    // print_r($a); 
    if($password == $dbpassword) 
    { 
     echo "<hr>"; 
     echo "Password: True";echo "<br>"; 
     echo "Authenticated :) Here we go!!"; 
    } 
    else 
    { 
     echo "Password: False"; 
    } 
} 
else 
{ 
    echo "User Name: False"; 
} 

} 
+0

он получает имя пользователя и пароль с URL-адреса для t только для цели. я отредактировал пароль в базе данных, а затем проверил, и его успех, но с зашифрованным паролем, он ожесточен, что он вернет false ... –

+0

хорошо, никакого ответа от какого-либо ... я сделал с задачей, используя magento встроен в архитектуру входа администратора, например ниже $ check = Mage :: getModel ('admin/user') -> authenticate ($ username, $ password); но я хотел знать о методе шифрования, используемом в magento, но все равно не получил его от любого места :( –

ответ

1

Используйте эту функцию, чтобы подтвердить свой пароль против Magento хэшируются пароль

public function validateHash($password, $hash){ 
    $hashArr = explode(':', $hash); 
    switch (count($hashArr)) { 
     case 1: 
      return md5($password) === $hash; 
     case 2: 
      return md5($hashArr[1] . $password) === $hashArr[0]; 
    } 
} 

Чтобы проверить, если пароль действителен , сделайте как ниже

if(validateHash($password, $user->getData('password'))){ 
    echo 1; 
}else{ 
    echo 0; 
}