2010-12-03 17 views
4

Warum leitet Django den Benutzer zur Anmeldeseite um, wenn er versucht, auf Seiten zuzugreifen, die durch Berechtigungen geschützt sind? Wäre es nicht sinnvoller 403 zu erhöhen? Dann konnte ich eine sinnvolle Nachricht in 403.html anzeigen (mit benutzerdefinierter Middleware), um dem Benutzer zu sagen, dass er keine Berechtigung zum Ausführen der Aktion hat. Ich wäre auch in der Lage, Links zu Ansichten zu identifizieren, die dem Benutzer gar nicht erst präsentiert werden sollten oder die versuchen, auf verbotene Ressourcen zuzugreifen.Django - Weiterleitung zur Anmeldeseite vs. 403

Antwort

2

Wenn Sie über die login_required Dekorateur sprechen, gibt es keinen Grund, Sie haben, dass zu verwenden. Du könntest einen ähnlichen Dekorateur schreiben, der genau das tat, wonach du suchst (gib eine 403 Antwort zurück).

Leider ist die login_required decorator code tatsächlich etwas komplex, so dass es nicht trivial wäre, nur für Ihre Bedürfnisse zu kopieren/ändern, da der Redirect-Teil tatsächlich innerhalb der user_passes_test Funktion ist, die sie verwenden.

+0

Es geht mehr um permission_required decorator. Ich könnte Custom Decorator schreiben, stimme ich zu. Aber meine Frage ist, sollte dies nicht standard Django Verarbeitung sein? Ich habe keinen Zugang, ich bin eingeloggt - sende 403 und der Entwickler muss 403.html definieren. – Tomas

+0

In diesem Fall, überprüfen Sie [Ticket 5515] (http://code.djangoproject.com/ticket/5515) oder [diese benutzerdefinierte Middleware] (http://chronosbox.org/blog/manipulando-erros-http-403 -permissao-negada-no-django? lang = en) –

+0

Danke. Ich entschied mich für eine benutzerdefinierte Middleware. Ich dachte nur, dass es nett wäre, wenn Django 403 ohne benutzerdefinierte Middleware unterstützt. – Tomas

Verwandte Themen