Я пытаюсь сделать RPC вызов к серверу deepstream, который требует проверки подлинности, вот конфиг:RPC без аутентификации
#Authentication
auth:
type: http
options:
endpointUrl: http://localhost:3000/auth-user
permittedStatusCodes: [ 200 ]
requestTimeout: 500
А вот разрешение:
rpc:
"*":
provide: true
request: true
Аутентификация работает нормально. Но когда я пытаюсь сделать вызов RPC перед вызовом
client.login()
я получаю эту ошибку: ACK_TIMEOUT, и глядя на WebSocket кадры не кажется, что кадры/данные отправляются на сервер, является существует ли какая-либо проверка на стороне клиента, запрещающая любое взаимодействие с сервером до входа в систему? Есть ли способ сделать анонимный вызов RPC, а затем сделать логин?
Я пробовал логин с нулевым значением, но я получаю INVALID_AUTH_DATA, Должен ли он быть настроен где? (чтобы разрешить анонимный вход и аутентификацию) –
На самом деле вызов login() без аргументов является сервером проверки подлинности HTTP, поэтому я разрешаю логин без учетных данных и применяю некоторые политики ограничения с помощью permissions.yml –
с null вам также необходимо будет предоставить обратный вызов, например '.login (null, (success, errorCode, error) => {})' - все вызовы перенаправляются на сервер http-аутентификации, так как довольно часто вы хотите читать данные подключений, например. cookie из заголовка, а не учетных данных пользователя. Просто убедитесь, что сервер auth позволяет этим вызовам проходить, но сильно ограничивает то, что они могут делать, как вы упомянули выше – wolframhempel