Einen Beta-Code für eine öffentliche django Website
-
01-07-2019 - |
Frage
Ich bin über eine Beta-Version der Website. Es braucht einen Beta-Code haben Zugriff zu beschränken. Der Standort befindet sich in django geschrieben.
Ich will nicht das grundlegende Auth-System ändern, um einen Beta-Code aufzunehmen, und ich interessiere mich nicht besonders, dass die Sicherheit des Beta-Code ist gepanzert, nur, dass es ein bedeutender Hemmschuh.
Wie soll ich das tun? Es ist ein ziemlich großes Projekt, so zu jeder Ansicht Code hinzuzufügen, ist bei weitem nicht ideal.
Diese Lösung funktioniert gut. Die Middleware-Klasse endete ich mit diesem auf den Punkt:
from django.http import HttpResponseRedirect
class BetaMiddleware(object):
"""
Require beta code session key in order to view any page.
"""
def process_request(self, request):
if request.path != '/beta/' and not request.session.get('in_beta'):
return HttpResponseRedirect('%s?next=%s' % ('/beta/', request.path))
Lösung
Starten Sie mit dieser Django Schnipsel , aber ändern Sie es request.session['has_beta_access']
zu überprüfen. Wenn sie es nicht haben, haben sie dann eine Umleitung auf eine „eingeben Beta-Code“ Seite zurück, die, wenn sie mit dem richtigen Code gepostet, dass die Session-Variable setzt auf True
.
ihm eine öffentliche Beta macht dann besteht nur aus, dass die Middleware von Ihrer MIDDLEWARE_CLASSES
Einstellung zu entfernen.
Andere Tipps
Sie können sich wahrscheinlich Zugriff auf die gesamte Website über Apache mit .htaccess beschränken, aus der Projektraum, das Problem unter der django vollständig.
Tu, was Stackoverflow hat.
Sie hatten eine einfache E-Mail / Passwort Form. Es hatte ein einziges Passwort hartcodiert (falkensmaze). Wenn der Benutzer das Passwort wird gesetzt rechts ein Cookie. z.B. auth = 1
Keine Sorge darüber unsecure zu sein. Wer Care, wenn jemand hackt in die Beta?
Apache / .htaccess ist auch eine schöne und einfache Lösung.
Es soll möglich sein @login_required
Dekorateure auf der ganzen Linie zu addieren und mit ihr geschehen. Sofern Sie eine Boot-Belastung von View-Funktionen haben, sollte es nicht zu schrecklich sein.
Ich bin nicht sicher, welche Version des Pinax Code Sie verwenden, aber sie haben in der Fähigkeit gebaut, um den Standort aus für eine private Beta zu schließen, so dass Sie brauchen, um sich nicht viel zu tun, arbeiten.