2014-11-25 5 views
2

Я использую код igniter 2.2.0 с библиотекой ion_auth для аутентификации моих пользователей, но теперь мне нужно создать несколько успокоительных сервисов, и я хочу использовать библиотеку this. Я видел, что в rest.php я могу изменить параметр rest_auth на «digest» и что я могу определить auth_source как «библиотеку», проблема в том, что я не знаю, могу ли я установить библиотеку ion_auth в качестве библиотеки проверки подлинности.CodeIgniter 2.2.0 + ION_Auth + Restful API

1- На мой файл /application/confing/rest.php я поставил эти префы:

$config['rest_auth'] = 'digest'; 
$config['auth_source'] = 'library'; 
$config['auth_library_class'] = 'ion_auth'; 
$config['auth_library_function'] = 'get_hashed_password'; 
$config['rest_enable_keys'] = TRUE; 

2- я создал новую функцию/приложения/библиотеки/ion_auth

public function get_hashed_password($username) { 
    $user = $this->db->select('password')->where('email',$username)->get('users'); 
    if ($user->num_rows() == 0) { 
     return false; 
    } 
    $user_details = $user->row(); 
    $HA1 = $user_details->password; 
    return $HA1; 
} 

Затем я попытался подключиться к примеру службы, но ответ был:

{"status":0,"error":"Invalid credentials"} 

Я пытался сделать некоторые отладки на моем сервере, и я подумайте, что проблема в том, что функция get_hashed_password() должна возвращать пароль с помощью md5, и если я получу пароль непосредственно из базы данных, ion_auth использует bcrypt. Я думаю, что именно поэтому дайджест ['response'] и переменные valid_response от REST_controller в строке 1411 не равны.

Я также пытался заставить REST_crontroller принять полномочия (я знаю, что это не правильно, но я делаю некоторые тесты), то моя проблема в том, что я всегда получаю следующее сообщение об ошибке:

{"status":false,"error":"Invalid API Key "} 

Любой человек знает, как заставить его работать?

Благодарим за помощь!

+0

Как вы тестируете контроллер? Вы используете завиток или какой-то клиент REST. (как вы отправляете учетные данные на сервер) – Kyslik

+0

Привет, Kyslik! Я попытался использовать cURL, клиент Rest, называемый CocoaRestClient и Safari. – llKoull

+0

Вы отправляете уже хешированный пароль? потому что я не вижу никакого хэширования в функции 'get_hashed_password'. – Kyslik

ответ

0

Для проверки подлинности дайджеста функция библиотеки должна вернуть уже сохраненный md5 (имя пользователя: restrealm: password) для этого имени пользователя | Например: md5 ('админ: REST API: 1234') = '1e957ebc35631ab22d5bd6526bd14ea2'

Я попробовал, и я проходил мимо: попытаться вернуть MD5 ('$ Логин: REST API: $ пароль'); где $ login - ваш логин и пароль $ password - пароль

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