Přesměrování po přihlášení se Django

hlasů
1

Mám login-page Nastavit jako domovskou stránku, localhost / MySite. I se mohou přihlásit a úspěšně přesměrováni na localhost / mysite / mainpage.

Problém je, že mohu obejít přihlášení jednoduše pouhým zadáním cesty na adresu URL, například; Navigovat na domovské stránce, kde login-form je, pak jsem jen přidat / mainpage na localhost / mysite /, které úspěšně načte localhost / mysite / mainpage.

Jak jste si mohli představit, že to není velký. Ví někdo, co jsem udělal špatně?

Můj pohled

def index(request):
    if request.method == POST:
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                messages.info(request, OK)
                return redirect('/mysite/mainpage')
            else:
                messages.error(request, NOT OK)

    form = AuthenticationForm()
    return render(request, 'mysite/login.html', {form:form})

My urls.py

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^mainpage/$', views.main),
]
Položena 14/02/2020 v 00:03
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Můžete použít @login_requireddekoratér [Django-doc] na svém mainnázoru. Toto přesměrování na sadě cesty u LOGIN_URLnastavení [Django-doc] Pro přihlášení uživatele:

# app/views.py

from django.contrib.auth.decorators import login_required

def index(request):
    # …

@login_required
def main(request):
    # …

a v settings.py:

# settings.py

# …
LOGIN_URL = 'index'
# …

EDIT : Můžete vynechat ?next=parametr dotazu, nastavením redirect_field_name=…parametru na None:

@login_required(redirect_field_name=None)
def main(request):
    # …
Odpovězeno 14/02/2020 v 00:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more