Код ключа Codeigniter для службы REST

Я пишу простой сервис RESTful, используя сервер останова Phil Sturgeon. Я хочу защитить свои методы, используя ключ API, предоставленный с этой библиотекой.

К сожалению, это не очень хорошо документировано, и я немного потерял.

Я хочу выполнить аутентификацию пользователей (адрес электронной почты/пароль), а затем создать ключ авторизации для отправки по всем другим запросам. Но мне кажется, что мне уже нужен ключ auth для генерации одного... Создать фиктивный ключ не кажется очень безопасным. Извините, если это глупый вопрос, но какова должна быть лучшая практика?

Ответ 1

Если вы знакомы с другими API-интерфейсами, вы увидите общий шаблон. Я рекомендую метод аутентификации, в котором пользователь передает свой адрес электронной почты и пароль, который будет возвращать сгенерированный уникальный ключ auth. Ключ auth будет как идентификатор сеанса, подумайте о том, как работают cookie. Затем все другие методы API должны проверять $this- > post ('auth'), и вам нужно сравнить это с обработчиком сеанса (т.е. С базой данных или сеансами), прежде чем обрабатывать каждый запрос.

Кажется, много кода, да? Нет.

Все ваши модели должны иметь перегруженный конструктор:

class MyAPIController extends Rest_controller
{
    public function __construct()
    {
        parent::__construct();

        if(!authCheck($this->post('auth'))){
            returnFailedResponse();
            exit();
        }
}

Тогда напишите вам API как правило, как в примерах на сайте Phil Sturgeon. http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

Сделайте модель, у которой есть authCheck, чтобы проверить, что ключ auth действителен, и создайте метод returnFailedResponse, чтобы вернуть 401 Unauthorized.

В другом контроллере, позвоните ему "Auth", используйте описанный выше конструктор.

Теперь каждый вызов вашего api должен установить заголовок для Auth. Ex. 'Auth: 12m34k23b'.