Django,当我们有不同的角色时,使用/设计行级权限系统

时间:2012-07-04 14:06:19

标签: django permissions django-permissions role-base-authorization row-level-security

我正在开发学习管理系统。

系统有几个演员,如学生,导师,管理员,院长等。现在,我需要一个可以处理不同角色的权限系统(学生可以在他们的篮子中添加课程,导师可以CRUD课程,管理员也可以访问对金融部分等等。)

根据我的研究,我需要一些可以处理不同角色的行级权限系统。我见过一些应用程序,例如django-guardian djang-permissions django-rulez等。但仍然对如何设计基于它们的角色感到困惑(它们没有详细记录)。

任何人都可以给我一个提示来完成这项痛苦的工作吗?

1 个答案:

答案 0 :(得分:1)

Django有一个非常好的身份验证/授权api内置

我建议您阅读以下文档:https://docs.djangoproject.com/en/dev/topics/auth/这为您提供了基础知识。

对于您的应用程序,最好的方法是设置cetain事物的权限,例如编辑课程的权限。然后,您可以使用权限所需的装饰器来查看允许您执行这些操作的视图。例如,如果您有一个视图:

def edit_course(request):
    ...#handle form rendering/submission for course model

您可以添加以上此视图:

@permission_required('course_editor')
def edit_course(request):
    ...#handle form rendering/submission for course model

然后只有拥有此权限的用户才能访问该功能。

您可以通过创建可以分配权限的群组来进一步发展,例如教师组,然后您可以将所有员工分配到该组,他们将继承此“course_editor”权限。

但正如我所说,这个问题对于特定答案来说有点宽泛,所以你最好的办法是在上面的网址上查看文档。