artgrosvil
@artgrosvil
#dev #programming #student #startups #chill

Как настроить авторизацию в codeigniter rest full api?

Здравствуйте. Такая ситуация. Использую библиотеку для rest full api. Конфиг такой(убрал комментарии для краткости):
<?php

defined('BASEPATH') OR exit('No direct script access allowed');

$config['force_https'] = FALSE;

$config['rest_default_format'] = 'json';

$config['rest_supported_formats'] = [
    'json',
    'array',
    'csv',
    'html',
    'jsonp',
    'php',
    'serialized',
    'xml',
];

$config['rest_status_field_name'] = 'status';

$config['rest_message_field_name'] = 'error';

$config['enable_emulate_request'] = TRUE;

$config['rest_realm'] = 'API';

$config['rest_auth'] = FALSE;

$config['auth_source'] = '';

$config['auth_library_class'] = '';
$config['auth_library_function'] = '';

$config['rest_valid_logins'] = [];

$config['rest_ip_whitelist_enabled'] = FALSE;

$config['rest_ip_whitelist'] = '';

$config['rest_ip_blacklist_enabled'] = FALSE;

$config['rest_ip_blacklist'] = '';

$config['rest_database_group'] = 'default';

$config['rest_keys_table'] = 'apps_api_keys';

$config['rest_enable_keys'] = TRUE;

$config['rest_key_column'] = 'key';

$config['rest_limits_method'] = 'ROUTED_URL';

$config['rest_key_length'] = 40;

$config['rest_key_name'] = 'X-API-KEY';

$config['rest_enable_logging'] = TRUE;

$config['rest_logs_table'] = 'apps_api_logs';

$config['rest_enable_access'] = TRUE;

$config['rest_access_table'] = 'apps_api_access';

$config['rest_logs_json_params'] = TRUE;

$config['rest_enable_limits'] = FALSE;

$config['rest_limits_table'] = 'apps_api_limits';

$config['rest_ignore_http_accept'] = FALSE;

$config['rest_ajax_only'] = FALSE;

$config['rest_language'] = 'english';


Теперь вопрос к авторизации. Как авторизовываться, используя созданный в базе ключ для доступа к API?

Например, обращаясь на класс Key.php (для создания ключа), ключ требуется, но если посылаю в заголовках ключ, говорит, что его не существует. Обращаясь просто на контроллеры api, вообще никакой ключ не просит. Что я не понимаю?

Еще немного странностей.
Если делаю ключ приватным, вывод такой:
{"status":false,"error":"Invalid API key sckogwg0g8gosgwk8wgscw4kg000gc0w088w48s8"}

Если ключ не приватный, то:
{"status":false,"error":"This API key does not have access to the requested controller"}


Грешу на то, что та либа не умеет вложенные папки. Ибо разложил классы апи по папкам.

Заранее спасибо. Надеюсь, еще остались бородачи, использующие эту древность.
  • Вопрос задан
  • 581 просмотр
Решения вопроса 1
artgrosvil
@artgrosvil Автор вопроса
#dev #programming #student #startups #chill
В общем проблема была в не чтении документации.
Параметр rest_enable_access отвечает за использование таблицы в базе, куда пишется ключ к апи и контроллер. Если нет записи для использования в базе, значит будет ошибка "This API key does not have access to the requested controller".

А насчет ошибки "Invalid API key", она возникает, если в базе установить параметр is_private_key = 1.

Что именно этот параметр означает не понятно. То ли, что данный ключ не может пользоваться в данный момент или что-то еще.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы