Продолжайте получать ошибку подделки межсайтовых запросов при использовании Ueberauth

Я использую Phoenix версии 1.3 и UeberAuth "~> 0.6". В настоящее время я получаю сообщение об ошибке CRSF, которое, по моему мнению, не должно происходить, но вполне возможно, что я делаю ошибку.

В моем файле router.ex у меня есть следующее:

      scope "/auth", DiscussWeb do
    pipe_through :browser
    get "/:provider", AuthController, :request
    get "/:provider/callback", AuthController, :callback
end

В моем файле контроллера обратный вызов выглядит следующим образом:

      def callback(conn, params) do
    callback_t(conn, params)
    conn
    |> put_flash(:info, "Github Authenticate?")
    |> redirect(to: Routes.topic_path(conn, :index))
end

defp callback_t(conn, params) do
    IO.puts "+++"
    IO.inspect(conn.assigns)
    IO.puts "+++"
    IO.inspect(params)
    IO.puts "+++"
end

В браузере меня перенаправляют на GitHub для входа в систему. Однако получаю такой ответ:

      debug] Processing with DiscussWeb.AuthController.callback/2
  Parameters: %{"code" => "908a69a812c17af0ab0b", "provider" => "github"}
  Pipelines: [:browser]
+++
%{
  ueberauth_failure: %Ueberauth.Failure{
    errors: [
      %Ueberauth.Failure.Error{
        message: "Cross-Site Request Forgery attack",
        message_key: :csrf_attack
      }
    ],
    provider: :github,
    strategy: Ueberauth.Strategy.Github
  }
}
+++
%{"code" => "908a69a812c17af0ab0b", "provider" => "github"}
+++
[info] Sent 302 in 4ms
[info] GET /

Ожидается ли это? Похоже, я на самом деле вошел в систему, потому что, если я попробую то же самое в браузере, мне не нужно будет входить в GitHub. Однако также происходит сбой CRSF, с которым я не знаю, что делать, и нет способа получить нужную мне информацию из переменной conn.assigns.

Мы будем благодарны за любую помощь или совет!

2 ответа

Обновите в файле mix.exs ueberauth_githubдо последней версии вот так {:ueberauth_github, "~> 0.8"}, а затем запустите mix.deps update (вы можете начать с чистого листа с mix.deps clean). После этого я прошел аутентификацию с помощью Github без каких-либо проблем или дополнительных стратегий. Я использовал приложение в комментарии к вашему вопросу, прежде чем нашел решение.

Мне пришлось использовать более старые версии Ueberauth и Ueberauth_Github, чтобы заставить его работать правильно:

Мои отсылки в файле mix.exs :

        {:ueberauth, "~> 0.6.0"},
  {:ueberauth_github, "~> 0.7.0"},
Другие вопросы по тегам