Функция login (запрос, пользователь) успешно регистрирует пользователя. Но после перенаправления request.user.is_authenticated имеет значение False.Что я делаю неправильно? - PullRequest
0 голосов
/ 24 сентября 2019

В Контрольная точка 1 , request.user доступна и is_authenticated - True.

from django.shortcuts import render, redirect
from .forms import LoginForm
from django.contrib.auth import authenticate, login, logout
from django.urls import reverse

def login_view(request):
    if request.user.is_authenticated:
        return redirect('publicusers:dashboard', permanent=True)
    else:
        context             = {
            "head_title": "Login",
            "page_title": "Login Page",
            "content": "Login Content",
        }
        # POST
        if request.method == "POST":
            login_form                          = LoginForm(request.POST)
            context["login_form"]               = login_form

            if login_form.is_valid():
                username                        = login_form.cleaned_data['username']
                password                        = login_form.cleaned_data['password']

                user = None
                try:
                    user = authenticate(request, username=username, password=password)
                except:
                    context["error_message"]    = "There was an error authenticating."
                    return render(request, "login.html", context)

                if user is not None:
                    if user.is_active:
                        login(request, user, backend='publicusers.backends')
                        # Checkpoint 1
                        print('User:', type(user), request.user, request.user.is_authenticated, request.session)
                        return redirect(reverse('publicusers:dashboard'), context)
                    else:
                        context["error_message"]    = "Your account has been deactivated."
                        return render(request, "login.html", context)
                else:
                    context["error_message"]    = "Invalid account."
                    return render(request, "login.html", context)

            else:
                context["error_message"]        = "Invalid credentials."
                return render(request, "login.html", context)

        else:
            # GET
            login_form              = LoginForm()
            context["login_form"]   = login_form
            return render(request, "login.html", context)

В Контрольная точка 2 , request.user.is_authenticated -False;но request.session доступен и печатает разные результаты в обеих функциях.

def dashboard_view(request):
    # Checkpoint 2
    print('Dashboard:', request.user.is_authenticated, request.session)
    if not request.user.is_authenticated:
        return redirect('publicusers:login', permanent=True)

    context = {
        "head_title": "Dashboard",
        "page_title": "Dashboard Page",
        "content": "Dashboard Content",
    }
    return render(request, "dashboard.html", context)

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...