Почему после входа в мой сайт снова я вижу страницу входа? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть вопрос.1. в Django я создал страницу входа после успешного входа.Если я снова вхожу в / account / login, я вижу этот URL и могу войти снова.Как отключить страницу входа после того, как этот пользователь вошел в систему, и если пользователь вводит URL для страницы входа, получает другую страницу?

views.py

def user_login(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect("home")
        else :
            messages.error(request, "Bad username or password")

    return render(request, "login.html", context={})

tnx для справки

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете «отключить» его, добавив проверку, которая проверяет, аутентифицирован ли пользователь, и затем перенаправить его куда-то еще, например:

def user_login(request):
    if <b>request.user.is_authenticated</b>:
        return redirect('home')
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request,username=username,password=password)
        if user is not None:
            login(request,user)
            return redirect("home")
        else :
            messages.error(request,"Bad username or password")

    return render(request,"login.html",context={})

Таким образом, оператор if проверяет,пользователь аутентифицирован (вошел в систему), и если так, то мы возвращаем HTTP-ответ перенаправления на представление (здесь 'home').

В версиях Django до ,проверка request.user.is_authenticated() (поэтому метод должен быть , называемый ), но, поскольку , это свойство.

Но я бы не назвал его(безопасность) проблема.Это также можно рассматривать как функцию, например войти в другую учетную запись.

...