Ich habe eine Rails 5 (5.0.0.rc1) -App mit dem --api
-Flag eingerichtet. Es verwendet Warden für die Authentifizierung.Kein Statuscode in Rails-Protokoll nach Warden-Auth-Fehler
Alles funktioniert, außer dass die Warden-Authentifizierung fehlschlägt, wird die Antwort nicht ordnungsgemäß protokolliert. Das Protokoll sieht wie folgt aus:
Started GET "/widgets.json" for ::1 at 2016-06-14 11:38:20 +0000
Processing by WidgetsController#index as JSON
Completed in 0ms (ActiveRecord: 0.0ms)
oder in der Produktion:
I, [2016-06-14T14:12:54.938271 #17625] INFO -- : [db39f895-eeb1-4861-91d0-5d52c124e37a] Completed in 1ms (ActiveRecord: 0.0ms)
Es ist natürlich Completed 401 Unauthorized in...
sein sollte sagen, aber aus irgendeinem Grund, es nicht den Statuscode der Antwort wissen.
class UnauthorizedController < ActionController::Metal
include ActionController::Head
def self.call(env)
@respond ||= action(:respond)
@respond.call(env)
end
def respond
head :unauthorized
end
end
Es ist mit dem Grund head
Methode zu reagieren (keine Notwendigkeit zu machen alles), so vermutlich es:
Warden Authentifizierungsfehler auf ein Rack-kompatibel, werden ActionController::Metal
-abgeleitetes Controller, die sehr einfach ist, gesendet d verhält sich genauso wie die Verwendung von head
in einem normalen Rails-Controller. Aber nein.
Das Gleiche passiert, wenn ich versuche, redirect_to ...
oder render ...
(nach Einschluss der entsprechenden Module) zu verwenden. Irgendwo in der Rack → Rails → Warden → Warden Failure App (Controller) fehlt der Statuscode der Antwort. Das Protokoll kann die Anforderung protokollieren und weiß, dass es bearbeitet wurde, da es offensichtlich die Zeile "Abgeschlossen ..." ausspuckt. Aber etwas ist nicht richtig angeschlossen.
Irgendwelche Ideen, wie Sie das beheben können?
Könnten Sie schieben Sie Ihren minimalen App-Code zu handhaben GitHub? Coz, das übliche Setup ist 'Rack → Warden → Rails' und nicht' Rack → Rails → Warden'. – Uzbekjon
@ Usbekjon Fertig. Hatte einen mehr oder weniger bereit zu gehen, eigentlich. Sie finden es [hier] (https://github.com/Flambino/WardenLogging_Test). Und ja, was du sagst, macht total Sinn (es ist schließlich Middleware), also kann es gut sein, dass ich gerade alles komplett zurückgestellt habe. – Flambino