Вход и выход нескольких пользователей Django

#django #django-authentication

#django #django-аутентификация

Вопрос:

Два пользователя одного типа входят в систему. Когда один из пользователей меняет вкладку, теперь пользователь является тем, кто вошел в систему последним ({{ 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. Вы не можете заставить нескольких пользователей использовать один и тот же браузер, если это то, о чем вы спрашиваете.

2. Именно в этом и заключалась моя проблема! Спасибо.

Ответ №1:

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

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