Получение информации к маршрутизатору Plug из вызова запуска Cowboy

Я ищу способ получить строку из моего вызова стартапа Cowboy ...

token = RandomString.generate()
Plug.Adapters.Cowboy.http MyRouter, []

К коду, используемому в роутере:

get "/webhook/:token" do
  if token == [what I generated earlier] do
    # handle request
  end
end

Чтобы быть более конкретным: я работаю на сервере веб-перехватчиков. Я хочу:

  1. Сгенерировать секретный токен при запуске сервера;
  2. Отправьте этот токен на сервер API, который будет использовать его для будущих запросов к моему серверу;
  3. Бит, с которым я борюсь: попросите сервер сравнить токен, предоставленный в запросах, с сгенерированным токеном и убедиться, что он соответствует разрешению запроса.

Я не вижу ничего ни в одном из аргументов опций для Plug.Adapters.Cowboy.http, что позволило бы мне получать данные пользователя на маршрутизатор.

Как я могу получить токен от функции, запускающей ковбой, на маршрутизатор, чтобы я мог принудительно выполнить аутентификацию?


person JJJollyjim    schedule 22.09.2015    source источник


Ответы (1)


Вы можете использовать именованную таблицу ETS для хранения токена. Во время запуска выполните:

:ets.new(:configuration, [:named_table, :set, :protected])
:ets.insert(:configuration, {:token, token})

Затем, когда вам понадобится получить токен позже:

[token: token] = :ets.lookup(:configuration, :token)

Также см

person Patrick Oscity    schedule 22.09.2015