OmniAuth прекрасно работает, но я заметил, что когда он используется в приложении Rails v2.3.6, он передает запросы следующему промежуточному программному обеспечению Rack , даже если он заканчиваетсяобрабатывает сам запрос и отвечает перенаправлением.
Выдержка из кода: (из Github )
if current_path == request_path && OmniAuth.config.allow....
status, headers, body = *call_app!
@response = Rack::Response.new(body, status, headers)
request_phase
elsif current_path == callback_path
callback_phase
else
...
end
И мое приложение после прохождения /auth/provider
запрос, генерирует исключение и возвращает 404. Пользователь не видит этого, но ExceptionNotifier
и журналы делают.Чтобы справиться с этим, я создал другое промежуточное ПО, которое просто отвечает [200,{},[]]
для всех путей, таких как /auth/provider_name
.
Почему OmniAuth передает запрос в стек промежуточного ПО?