2 Stimmen

Django SSL für nur einige Seiten

Ich weiß, es gibt andere Q/A dazu, aber sie sind zu detailliert.

Ich möchte wissen, wie man SSL korrekt (sicher, DRY, wartbar) auf einer Django-Website implementiert.

Ich möchte https auf den Account-Seiten (Anmeldung, Registrierung, ...) und "applikative Seiten" haben, aber öffentliche Inhaltsseiten in http behalten.

Ich bin offen für alle Arten von Antworten, aber bitte erkläre es so, als ob du sagen würdest "verwende überall https, es hat Vorzüge X, Y, Z, die die Nachteile A, B, C übersteigen", oder "du musst 2 Cookies verwenden"

Wenn es keine schlechte Idee ist, das zu tun, würde ich besonders gerne wissen, was mit sicheren Cookies auf unsicheren Seiten gemacht werden soll (wissend, dass ich ein konsistentes Erlebnis auf meiner Website erhalten möchte, Benutzer eingeloggt lassen usw.).

4voto

Sudipta Punkte 4525

Immer wenn Sie eine Funktionalität benötigen, die auf ausgewählte Ansichten angewendet werden soll, ist die Verwendung von Dekoratoren der richtige Weg. Wenn Sie hingegen etwas implementieren möchten, das auf alle Anfragen angewendet werden soll, sollten Sie ein Middleware verwenden.

Erstellen Sie einen Dekorator, der die eingehende Anfrage auf https umleitet.

#decorators.py
from django.http import HttpResponseRedirect

def secure_required(view_func):
    def _wrapped_view_func(request, *args, **kwargs):
        if request and not request.is_secure():
            request_url = request.build_absolute_uri(request.get_full_path())
            secure_url = request_url.replace('http://', 'https://')
            return HttpResponseRedirect(secure_url)
        return view_func(request, *args, **kwargs)
   return _wrapped_view_func

In Ihrer views.py

from decorators import secure_required

@secure_required
def myViewFunction(request):
    ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X