Я использую код воспламенителя 2.2.0 с библиотекой ion_auth для аутентификации своих пользователей, но теперь мне нужно создать несколько спокойных сервисов, и я хочу использовать этот библиотека. Я видел, что в rest.php я могу изменить параметр rest_auth на «digest» и определить auth_source как «библиотеку», проблема в том, что я не знаю, могу ли я установить библиотеку ion_auth в качестве библиотеки аутентификации.
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- Я создал новую функцию в / application / library / 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. Я думаю, что это причина того, что переменные digest [‘response’] и valid_response из REST_controller в строке номер 1411 не равны.
Я также попытался заставить REST_crontroller принять учетные данные (я знаю, что это неправильно, но я проводил некоторые тесты), тогда моя проблема заключается в том, что я всегда получаю следующую ошибку:
{"status":false,"error":"Invalid API Key "}
Кто-нибудь знает, как заставить это работать?
Спасибо за вашу помощь!
Для дайджест-аутентификации библиотечная функция должна вернуть уже сохраненное md5 (имя пользователя: restrealm: пароль) для этого имени пользователя.
| Например: md5 (‘admin: API REST: 1234’) = ‘1e957ebc35631ab22d5bd6526bd14ea2’
Я попробовал и прошел:
попробуйте вернуть MD5 (‘$ login: REST API: $ password’);
где $ логин — ваш логин, а $ пароль — пароль
Других решений пока нет …