我获得了管理员ID,但是当我以用户身份登录时,当我尝试获取用户ID时,我仍然获得管理员ID

问题描述 投票:0回答:1

我在我的views.py文件中创建了一个函数,当我尝试获取用户的ID时,它可以让您根据现在登录的电子邮件的角色看到不同的仪表板,我正在获取登录的用户的ID服务器之前我应该为此做什么。我尝试在注销期间清除会话,但它仍然无法正常工作,并且代码正在获取我之前登录的管理员的ID。

 def determine_role(request):
    user = request.user  # Get the authenticated user object
    role = user.role  # Access the role attribute
    # Now you can use the role to perform further actions
    if role == 'admin':
        # If the user is an admin, do something
        return render(request, 'loginapp/admin_dashboard.html')
    elif role == 'user':
        # If the user is a regular user, do something else
        return render(request, 'loginapp/user_dashboard.html')   
django django-views django-forms
1个回答
0
投票

我不知道您是否正在手动清理会话。如果是这样,您应该使用 Django 提供的

logout
函数来注销用户。您可以在
django.contrib.auth.logout()
中找到此功能。根据 Django 的文档:

当调用logout()时,当前请求的会话数据将被完全清除。所有现有数据都将被删除。这是为了防止其他人使用同一网络浏览器登录并访问先前用户的会话数据。如果您想将任何内容放入用户注销后立即可用的会话中,请在调用 django.contrib.auth.logout() 后执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.