Как отследить пользователя, вошедшего в систему или не использующего API? - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю API, используя cakePHP.Я создал API для входа пользователя. Функциональность этого входа работает нормально.Вот функция входа в систему -

публичная функция login () {

    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
    }
} 

Теперь я сталкиваюсь с проблемой, как я могу проверить из другого API, что пользователь вошел в системув или нет?В веб-приложении это может быть сделано по умолчанию системой аутентификации ($ this-> Auth-> user ()).Но я не понимаю, как я могу проверить, вошел ли этот пользователь в другой API.Нужно ли отправлять параметр API для каждого запроса API?или любое другое предложение?

Примечание: я не могу отправить токен в заголовке.Потому что в заголовке я посылаю токен jwt.Потому что в моем приложении есть два вида аутентификации.Один вход в систему или нет?и другой зависит от другого ввода от пользователя.Это обработка JWT.Так что токен JWT я уже отправляю по заголовку.Так что заголовок уже используется.

1 Ответ

0 голосов
/ 27 февраля 2019

Несколько вещей, чтобы уточнить.

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

В API вы можете сделать то же самое: пользователь входит в систему, получает сеанс и присоединяет к каждому файлу, похожему на файл cookie сеанса.следующие запросы.( Пример такого клиента Python .) Однако, это не считается хорошей практикой, так как API должны быть без сохранения состояния (то есть, не требуя чего-то вроде файлов cookie).Решение работы с токенами, например, хэши некоторых секретных токенов вместе с меткой времени.Компонент Auth также хорошо это поддерживает.После настройки вы можете просто позвонить $this->Auth->user(), как обычно, и он вернет либо false, либо массив пользовательской информации.См. Ссылку ниже.

Обратите внимание, что по умолчанию этот тип аутентификации блокирует неаутентифицированных пользователей, поэтому вы никогда не увидите, что ->user() вернет false, если вы не сделаете страницы общедоступными.

См. Также:

...