Django 中的功能权限
Posted
技术标签:
【中文标题】Django 中的功能权限【英文标题】:Functional permissions in Django 【发布时间】:2017-04-03 04:24:23 【问题描述】:在 Django 中是否有一种内置的方式来为用户分配功能权限?从documentations 看来,Dajngo 权限已绑定到模型。
例如,我想要创建 4 种类型的用户组:普通用户、经理、管理员和超级管理员。
默认情况下,不同组中的用户将有权执行不同类型的操作。例如 Admin 组的用户可以执行 Task1、Task2 和 Task3,但 Managers 组的用户只能执行 Task1 和 Task2(无论这些任务在哪个应用程序中)。
此外,可以为用户修改用户权限以撤销执行某些任务的访问权限。例如,默认情况下,所有管理员都可以执行任务 1、任务 2 和任务 3,但可以修改特定管理员的权限以仅执行任务 1 和任务 3。
这可以通过构建 Django 权限和组来实现,还是需要编写自己的权限系统(或者是否有第三方 Django 应用程序可以做到这一点)?
如果写自己的权限和组系统会更好,任何设计建议都可以遵循。
谢谢!
【问题讨论】:
has_permission 装饰器可用于视图,需要管理很多东西——用户、组和权限。我已经使用 django-guardian 进行基于角色的访问控制。它可能适合您的需求。 【参考方案1】:您可以在管理页面中设置权限,如 foo.can_write 或在您自己的视图中,如
myuser.user_permissions.add(permission, permission, ...)
在视图中,您可以设置某些操作所需的权限。来自文档:
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote')
def my_view(request):
【讨论】:
以上是关于Django 中的功能权限的主要内容,如果未能解决你的问题,请参考以下文章