пример с токеном
Когда вы сделали remote
, то любой, кто знает путь может к нему обратится и выполнить запрос или действие. Но достаточно часто это требуется ограничивать только доверенными скриптами.
Первый и самый простой способ — это токен.
При POST
запросе вы одним из параметров передаете "token" = "TOKEN_VALUE"
и проверяете его в коде remote
:
=: if(condition: $#post[token] = "TOKEN_VALUE"; then: $select)
select: select(table: 'table'; field: 'summ'; where: 'key' = $#post[key])
В этом случае если сторонний сервер в POST
не передаст token
или передаст неверный token
, то он не получит ответа.
пример с API пользователями
Второй подход чуть сложнее, но имеет дополнительное преимущество.
Дело в том, что при базовой настройке если у вас несколько разных ремоутов, то обращение к ним идет по разным url
.
Использование API-user
позволяет отправлять запрос на один адрес с указанием к какому ремоуту он относится в теле запроса.
Что бы это работало нам нужно создать пользователя с признаком API
.
Этот API-пользователь должен быть выбран в поле api_user
в remotes
.
Обращение идет в POST
оформленному как raw-data
по одному адресу http(s)://domain.zone/Json/
.
В тело запроса передается JSON
содержащий секцию авторизации и секцию remotes
:
{
"auth": {
"login": "json",
"password": "1111"
},
"remotes": [
{"name":"remote1", "data": {"var1": 1, "var2": [1,2,3]}},
{"name":"remote2", "data": {"var1": 2, "var2": [3,2,5]}}
]
}
Таким образом может быть вызвано несколько ремоутов одновременно. Они будут выполнены в порядке в котором они переданы в запросе.
Когда вызов ремоута идет через API-JSON
интерфейс — то переменные, которые передаются в ремоут можно получить в переменной $#data
!