仅对Djang中的某些用户组限制某些页面

2024-04-20 09:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在这里,当一种类型的用户登录时,他可以通过简单地更改URL来访问任何其他用户的页面。如何将某些页面限制为仅限某些用户以及@login\u required

你知道吗视图.py你知道吗

def login_user(request):
if request.method == "POST":
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        u = User.objects.get(username=username)
        if user.is_active:
            login(request, user)
            if user.groups.filter(name='hod').exists():
                return redirect('/hod')
            elif user.groups.filter(name='principal').exists():
                return redirect('/principal')
            elif user.groups.filter(name='Rep').exists():
                return redirect('/rep')
            elif user.groups.filter(name='Ajithzen').exists():
                return redirect('/ajithsen')
            elif user.groups.filter(name='graphics').exists():
                return redirect('/ashok')
            elif user.groups.filter(name='Event_incharge').exists():
                return redirect('/incharge')
            elif user.groups.filter(name='Event_coord').exists():
                return redirect('/chair')
            elif user.groups.filter(name='IEEE').exists():
                return redirect('/ieee')
            else:       
                return render(request, 'retest/login.html', {'error_message': 'Invalid login'})
        else:
            return render(request, 'retest/login.html', {'error_message': 'Your account has been disabled'})
    else:
        return render(request, 'retest/login.html', {'error_message': 'Invalid login'})
return render(request, 'retest/login.html')
@login_required
def rep(request):
    u = request.user
    all_requests= Retest.objects.all() 
    return render(request, 'retest/home.html', {'u':u, 'all_requests' : all_requests }) 

你知道吗网址.py你知道吗

url(r'^$', views.login_user, name='login_user'),
url(r'^rep$', views.rep, name='rep'),

如果组rep的用户已登录,则可以通过将/rep更改为其他用户来访问其他用户的页面


Tags: 用户namereturnrequestexistsusernameloginrender
1条回答
网友
1楼 · 发布于 2024-04-20 09:23:28

一种方法是编写自己的decorator,检查是否允许当前用户查看他们试图访问的页面。这可以通过使用会话来完成。当用户登录时,他们会得到身份验证,并得到一个与其权限相对应的会话变量。你知道吗

相关问题 更多 >