如何使用Django在视图上设置站点范围的密码保护和权限要求?

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

我的Django应用程序适用于我工作的公司内部使用;但是,需要设置它,以便只有具有登录凭据的某些员工才能访问任何网页。此外,我需要能够自定义视图,以便只有具有正确权限的帐户才能访问它们。我该怎么做?

我的直觉是使用管理站点使用的相同密码保护和权限系统,因为我的项目基本上只是用于轻松查看和编辑数据库。然而,谷歌似乎没有提供任何关于如何做到这一点的信息,而且我只与Django合作了一个半月,所以我自己并没有完全了解这一点。有没有办法使用管理站点的密码保护和权限系统,还是无法访问?

django security passwords
1个回答
0
投票

如果员工权限足够,可以使用staff_member_required视图装饰器轻松完成。您只需将装饰器应用到您的视图中即可

staff_member_required示例:

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def random_view(request):
    #If the user does not have staff privileges he will be redirected to a login page 

如果您想要测试更具体的权限,您应该使用user_passes_test装饰器。见:Django User Passes Test Decorator

您将装饰器应用于视图并将函数作为参数传递,该参数验证用户是否应该有权访问该页面,如果函数返回正常的True访问权限,则将重定向用户。

user_passes_test示例:

from django.contrib.auth.decorators import user_passes_test

def user_is_author(user)
    #your test goes here, pseudo code example ignore syntax.
    return user.is_author

@user_passes_test(user_is_author)
def random_view(request):
    #if user passed the test the view will work normally
© www.soinside.com 2019 - 2024. All rights reserved.