Django несколько пользователей войти и выйти - PullRequest
0 голосов
/ 04 апреля 2019

Два пользователя одного типа логин. Когда один из пользователей меняет вкладку, теперь последний пользователь вошел в систему ({{user.username}}).

Более важной проблемой для меня является то, что как только один из них выходит из системы, другой автоматически выходит из системы. По сути, нет двух пользователей, есть только один пользователь, который вошел последним.
Кроме того, все представления являются @ login_required.

@login_required
def user_logout(request):
    logout(request)
    return HttpResponseRedirect(reverse('login'))


def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user:
            login(request, user)
            return HttpResponseRedirect(reverse('success_page'))
        else:
            return render(request, 'login.html')
    else:
        return render(request, 'login.html')

В settings.py:

SESSION_COOKIE_AGE = 24*60*60
LOGIN_URL = '/login/'

Моя основная пользовательская форма:

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2', )

Мой вопрос заключается в том, как я могу одновременно войти в систему нескольких пользователей в приложении Django.

1 Ответ

1 голос
/ 04 апреля 2019

Django использует сессии для управления пользователями.По сути, когда пользователь входит в веб-сайт Django, бэкэнд Django помещает cookie в браузер пользователей, который идентифицирует браузер как пользователя, который только что вошел в систему. Django (и, в основном, любая другая инфраструктура / реализация) разрешит только одному из этих пользователейпеченье за ​​сеанс.

Таким образом, если бы вы каким-то образом снова вошли в систему без выхода из системы, он просто переопределил бы текущий файл cookie пользователя и фактически вышел бы из системы предыдущего пользователя.

...