Перенаправление после входа в систему с Джанго

голоса
1

У меня есть набор Логин-страницу в качестве главной страницы, LOCALHOST / MySite. Я могу войти в систему и успешно перенаправлены на локальный / MySite / Главная.

Проблема в том, что я могу обойти логин просто, введя путь в URL, например; Я перейти на домашнюю страницу, где Логин-форма, то я просто добавить / на главную в локальный / MySite / который успешно загружает локальный / MySite / Главная.

Как вы можете себе представить, это не здорово. Кто-нибудь знает, что я здесь не так?

Мой взгляд

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})

Мой urls.py

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^mainpage/$', views.main),
]
Задан 14/02/2020 в 00:03
источник пользователем
На других языках...                            


1 ответов

голоса
1

Вы можете использовать @login_requiredдекоратора [Django-DOC] на ваш mainвзгляд. Это будет перенаправлять на съемочный пути по LOGIN_URLустановке [Django-док] , чтобы войти в потребителе:

# app/views.py

from django.contrib.auth.decorators import login_required

def index(request):
    # …

@login_required
def main(request):
    # …

и в settings.py:

# settings.py

# …
LOGIN_URL = 'index'
# …

EDIT : Вы можете опустить ?next=параметр запроса, установив redirect_field_name=…параметр в None:

@login_required(redirect_field_name=None)
def main(request):
    # …
Ответил 14/02/2020 в 00:08
источник пользователем

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