Наверх

Создание API для авторизации пользователей в приложениях

Иногда при создании приложений для Android и iPhone, а так же для использования в каких-то сторонних сервисах, может потребоваться сделать на сайте простенькое API для разграничения доступа.

Обычно схема этого API такая:

  • Пользователь вводит в приложении логин и пароль
  • Приложение делает запрос к сайту, передавая эти данные
  • Сайт проверяет, действительно ли есть пользователь с таким логином и правильно ли указан пароль
  • Если всё ок — сайт выдаёт в ответ токен
  • Приложение сохраняет этот токен у себя (на телефоне пользователя)
  • И при любых обращениях к сайту использует этот токен
  • Сайт получает токен и выдаёт контент, который доступен именно для этого пользователя


На первый взгляд довольно сложная схема, но вот как можно реализовать её, используя дополнение HandlerAPI.

Создаём «секцию», в контенте которой вызываем сниппет AuthApiToken


И в сниппете пишем логику, которая будет проверять токен или авторизовывать пользователя:
<?php
$output = [
    'success' => false
];

if ($_REQUEST['token']) {
    if ($user = $modx->getObject('modUser', ['password' => $_REQUEST['token']])) {
        $output['username'] = $user->username;
        $output['success']  = true;
    } else {
        $output['message']  = 'Wrong token';
    }
} else {
    $response = $modx->runProcessor('security/login', $_REQUEST);

    if ($response->response['success']) {
        $user = $modx->getObject('modUser', ['username' => $_REQUEST['username']]);
        $output['username'] = $user->username;
        $output['token']    = $user->password;
        $output['success']  = true;
    }

    if ($response->isError()) {
        $output['message'] = $response->getMessage();
    }
}

return $modx->toJSON($output);

В такой схеме при неправильном пароле пользователь увидит стандартное сообщение об ошибке — точно такое же, как и в случае неправильного пароля на самом сайте.


0 комментариев

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX