2017-05-30 3 views
3

Wir einige benutzerdefinierte Modell Bindemittel verwenden für unsere NET Core-api und eine gewisse Logik in dem Modell Binder haben, die manchmal in einem 403 zurückgegeben durch unsere api führen sollte.Rückgabe eines 403 aus einem benutzerdefinierten Modell Binder

Ich bin mir bewusst, dass Sie Mvc.ModelBinding.ModelBindingResult.Failed() verwenden können, ein 400 zurückzukehren, wenn Modell Bindung versagt jedoch, wenn sie fällig ist bei Unauthorized Zugang ar Ergebnis eines Versuchs, scheitern dann brauchen wir ein 403 zurückkehren, im Idealfall mit einer benutzerdefinierten Nachricht .

+0

Es wird empfohlen, nicht-Statuscodes oder zurückgehen in dem Modell Bindemittel zu setzen, wie hier angegeben: https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding#recommendations -und-best-practices Können Sie den Parameterwert direkt in der Aktionsmethode überprüfen und Unauthorized zurückgeben, wenn er Null oder Standard ist? –

Antwort

0

Kann nicht Sie zurück nur den Statuscode ?. Sie können dort Ihre eigene Nachricht anhängen.

return StatusCode(403); 
+0

Ich bin mir nicht sicher, ob diese Arbeit als das Modell während der MVC-Pipeline Bindung passiert und ich wieder ein 'Task', die, soweit ich weiß, können in Form eines' StatusCode' nicht wirklich sein? – DylanB

+0

Wenn Sie zurück ein 'Failed' es so etwas wie folgt aussieht: ' bindingContext.Result = ModelBindingResult.Failed(); Rückkehr Task.FromResult (0); ' Aber' bindingContext' kann nur auf 'Failed' oder' Success' und nicht auf einen bestimmten Grund für die Schwäche eingestellt werden: / – DylanB

0

Letztendlich entschieden wir uns, mit ModelBindingResult.Failed() und eine benutzerdefinierte Fehlermeldung zu gehen, die zeigten, dass das Versagen infolge eines Autorisierungsfehler war.

Verwandte Themen