Ich bin dabei, eine Beta-Version der Seite, an der ich gerade arbeite, im Internet zu veröffentlichen. Es muss einen Beta-Code haben, um den Zugriff zu beschränken. Die Seite ist in Django geschrieben.Einen Beta-Code für eine öffentliche Django-Site erstellen
Ich möchte nicht das grundlegende Auth-System ändern, um einen Beta-Code unterzubringen, und es ist mir nicht besonders wichtig, dass die Sicherheit des Beta-Codes eisenbeschichtet ist, nur dass es ein bedeutender Stolperstein ist.
Wie soll ich das tun? Es ist ein ziemlich großes Projekt, daher ist das Hinzufügen von Code zu jeder Ansicht alles andere als 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))
Das Problem dabei ist, dass dann, wer versucht, Zugang zu erhalten, auf die Anmeldeseite genommen wird, anstatt auf eine Seite für die Eingabe eines Beta-Codes. Die Login-Seite hat alle Menüs und UI um sie herum. Ich möchte das Zeug für jetzt privat behalten. – defrex
@defrex, machen Sie Ihren eigenen login_required Decorator, der Djangos eingebaute Version umschließt. Wenn Sie live gehen, ersetzen Sie es einfach durch Djangos. –