Elixir / Phoenix Framework аутентификация / авторизация - PullRequest
0 голосов
/ 24 октября 2019

Я делаю проект для фреймворка эликсира / феникса. Возник вопрос по авторизации. Например, у меня есть маршрут:

get "/dashboard", DashboardController, :index

Я хочу, чтобы только зарегистрированные пользователи могли идти по этому маршруту. Поскольку я представляю этот процесс: пользователь идет по этому маршруту, он проверяет, что пользователь вошел в систему. Если да, то вызывается функция контроллера, которая обрабатывает этот маршрут, если нет, то происходит перенаправление на страницу входа. Подскажите, пожалуйста, как правильно реализовать это в феникс фреймворке? Подобных маршрутов может быть много, для этого мне нужен 1 обработчик.

1 Ответ

1 голос
/ 24 октября 2019

Я использую pow для аутентификации. У меня есть следующий конвейер:

 pipeline :protected do
    plug Pow.Plug.RequireAuthenticated,
      error_handler: Pow.Phoenix.PlugErrorHandler
  end

Затем мне просто нужно пропустить мою область через правильный канал:

 scope "/dashboard", MyAppWeb do
    pipe_through [:browser, :protected]
    get "/", PageController, :dashboard
  end

Все пути, которые требуют аутентификации, будут идти туда. Если вы хотите это для какой-то другой библиотеки / реализации, подход должен быть похожим. Вы можете увидеть пример аутентификации с использованием Guardian в здесь , где область используется таким же образом.

...