| 1 | = Команда login = |
| 2 | |
| 3 | == Назначение команды == |
| 4 | |
| 5 | Выполнение большинства команд API требует аутентификации - наличия в запросе клиента данных, доказывающих, что пользователь, от имени которого запрашивается выполнение команды, действительно является тем, за кого он себя выдает. Таким доказательством является наличие в запросе cookies, переданных сервером в ответе на ранее выполненный запрос. |
| 6 | |
| 7 | Но как быть, если клиент собирается сделать запрос первый раз, и никаких cookies у него еще нет? Для такого случая существует команда `login`. Она выполняется даже в том случае, если в запросе клиента отсутствуют cookies. Команде `login` передается имя пользователя и пароль. Сервер проверяет, действительно ли в его базе данных есть запись о пользователе с указанным именем, и если да, сервер генерирует cookies с данными аутентификации, которые клиент затем может использовать при отправке последующих запросов. |
| 8 | |
| 9 | == Ключи запроса == |
| 10 | |
| 11 | || '''Ключ''' || '''Тип''' || '''обязательный''' || '''Описание''' || |
| 12 | || "cmd" || строка || да || "login" - имя команды || |
| 13 | || "login" || строка || да || имя пользователя || |
| 14 | || "password" || строка || да || пароль пользователя || |
| 15 | |
| 16 | login:: имя пользователя, запрашивающего аутентификацию. |
| 17 | |
| 18 | password:: пароль пользователя. |
| 19 | |
| 20 | === Пример запроса === |
| 21 | |
| 22 | `{"cmd":"login","login":"john","password":"kajd64#M-ls84"}` |
| 23 | |
| 24 | == Возвращаемые данные == |
| 25 | |
| 26 | В случае успешного выполнения команда `login` генерирует данные аутентификации и устанавливает cookies. В JSON-объекте ответа никакие дополнительные данные не передаются. Пример ответа в случае успешной аутентификации пользователя: |
| 27 | |
| 28 | `{"cmd":"login"}` |
| 29 | |
| 30 | В случае ошибки аутентификации (пользователя с указанным именем не существует или указан неверный пароль) команда `login` возвращает ключ `error2`, значением которого является строка "неверное имя или пароль": |
| 31 | |
| 32 | `{"cmd":"login","error2":"неверное имя или пароль"}` |
| 33 | |
| 34 | == Совместимость == |
| 35 | |
| 36 | В версиях аппаратуры MC04-DSL-3U до июня 2013 г. (до ревизии sw r860), где использовался внешний сервер HTTP, при передаче команды `login` для аутентификации в URI запроса вместо `api.php` требовалось использовать `login.php`. В современных версиях аппаратуры (начиная с r860) пути `/api.php` и `/login.php` равнозначны. |