2015-02-25 2 views
0

Для приложения CakePHP я должен использовать алгоритм MD5 для хранения паролей входа.Система входа в систему CakePHP и MD5

Проблема У меня есть то, что я не могу преобразовать правильно отправленный пароль для входа в md5.

Например, если пароль евро, это md5 является 2acae8be44a70913481e66dd2cd3f761

Но CakePHP превратить его в f85378844044678d28f1a1f306d4af50, и благодаря тому, что пользователи не могут войти в приложение (или я предполагаю, что это проблема).

Чтобы включить пароли MD5, в AppControler я добавил:

public function beforeFilter() { 
    Security::setHash('md5'); 
} 

Кроме того, я попытался проверить функцию входа в систему с:

function login() { 

    if ($this->request->is('post')) { 

     pr(AuthComponent::password($this->data['Company']['password'])); 
     // this returns f85378844044678d28f1a1f306d4af50 

     // etc... 

    } 

} 

Можете ли вы дать мне пожалуйста, некоторые ключи, что я делаю неправильно с этим? В этом случае я должен использовать MD5.

+0

Вероятно потому, что вы установили 'salt' в ваш boostrap.php, поэтому в вашем случае это будет' md5 ($ salt. $ password) 'not' md5 ($ password) 'смотреть в' lib/Cake/Utils/Security', вы можете установить '$ salt' в' null' <- не рекомендуется –

+0

Нет, в boostrap.php – user198003

+0

нет переменной $ salt (или даже словосочетания) для проверки значения Security.salt. например: 'debug (Configure :: read ('Security.salt'));' –

ответ

0

В этом коде ваш пароль для шифрования с md5 и по сравнению с AuthComponent::password() Оба эти разных метода используют AuthComponent::password() в обоих случаях.

Вот пример того, как использовать: -

Добавить следующие строки кода в модели. Используйте компонент аутентификации для authpassword

App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); 

Добавление кода в разделе Перед началом сохранения функции для шифрования пароля: -

public function beforeSave($options = array()) { 
if (isset($this->data[$this->alias]['password'])) { 
$this->data[$this->alias]['password'] = AuthComponent::password(
$this->data[$this->alias]['password'] 
); 
} 
return true; 
} 

Используйте эту функцию модели для сравнения пароль: -

public function checkCurrentPassword($data) { 
$this->id = AuthComponent::user('id'); 
$password = $this->field('password'); 
return(AuthComponent::password($data['current_password']) == $password); 
} 
+0

MD5 - это форма хэширования, а не шифрование, хеширование не может быть отменено. – mezmi

Смежные вопросы