Django多用户登录和注销

Mah*_*chi 1 django django-authentication

两个相同类型的用户登录。当其中一个用户更改选项卡时,现在该用户是最后登录的用户({{ 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')
Run Code Online (Sandbox Code Playgroud)

在 settings.py 中:

SESSION_COOKIE_AGE = 24*60*60
LOGIN_URL = '/login/'
Run Code Online (Sandbox Code Playgroud)

我的基本用户表单:

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', )
Run Code Online (Sandbox Code Playgroud)

我的问题是如何让多个用户同时登录 Django 应用程序。

rit*_*lew 6

Django 使用会话来管理用户。基本上,当用户登录 Django 网站时,Django 后端会在用户浏览器中放置一个 cookie,该 cookie 将浏览器标识为刚刚登录的用户。 Django(以及基本上所有其他框架/实现)将只允许这些用户之一每个会话的cookie。

因此,如果您以某种方式再次登录而不注销,它只会覆盖当前用户的 cookie 并有效地注销以前的用户。