Продолжайте получать ошибку подделки межсайтовых запросов при использовании 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"},