Django管理 - 默认授权员工访问特定区域

9
有人能告诉我如何在django中默认情况下为具有is_staff属性的员工用户授予对某些模型的管理访问权限吗?目前,如果我以员工身份登录,我只会收到“您没有编辑任何内容的权限”的提示。如果我以超级用户身份登录,则可以访问一些东西(那些在admin.py中注册的内容)。 我希望基本上将员工成员作为一个群组来处理,并允许他们编辑一些模型或设置一些默认权限。我已经搜索了文档,但没有找到相关内容。
5个回答

5

您可以创建一个组,并把新员工用户加入其中。默认情况下不授予权限是一项安全功能。


1
我明白了,谢谢。如果有一种方法可以创建默认权限,那就太好了。默认情况下仍然没有权限,但我可以设置所有员工用户都会获得的基本权限集。如果有一种同时将多个用户添加到组中的方法,那也太好了,除非我漏掉了什么。 - hajamie
您可以在用户表上创建一个触发器,或者覆盖User Model上的model_save()方法。这样您就可以自动将新用户作为组的一部分。您还可以在User的Admin类中创建一个管理操作,使所选用户成为该组的成员。 - dan-klasson

5
要做到这一点,请在Django管理界面的“群组”中创建一个群组。 Django Admin creating a group with permissions 您可以根据您希望员工或用户访问的模型添加模型权限。
完成后,将您的用户添加到该组。您可以通过选择感兴趣的用户并将他们添加到已创建的组来完成此操作。 Add specific user to groups 完成后,该用户将能够访问该组具有权限的所有模型。

直到我安装了 https://pypi.org/project/django-admin-view-permission/,才能在屏幕上看到我的自定义模型的权限列表。 - rongdong.bai

2

你写过自定义认证后端吗?我曾经编写了一个使用LDAP与现有认证系统进行接口的后端,和你一样遇到了“staff”用户没有任何模型权限的问题。超级用户没问题,只是普通员工有问题。

我通过在我的自定义认证类中继承ModelBackend来解决了这个问题:

## in my custom auth.py
from django.contrib.auth.backends import ModelBackend

class ActiveDirectoryBackend(ModelBackend):

ModelBackend类有必要的函数,用于确定组和用户级别的权限。

这个修复了标记为“staff”的用户无法访问模型的问题,并允许我通过组和权限来控制不同模型的访问。


0

您可以将员工分组以授予权限。

首先,请勾选ActiveStaff status,然后单击 ➕ 创建如下所示的组。*两个ActiveStaff status都必须被勾选,否则用户无法登录Django Admin

enter image description here

然后,从左侧框中选择一些权限并将它们移动到右侧框中,然后按下如下所示的保存按钮:

enter image description here

然后,普通员工被添加到右侧的框中,如下所示:

enter image description here

然后,向下滚动到底部,然后点击保存

enter image description here

现在,用户可以登录并根据以下所示的权限执行某些操作:

enter image description here


-3
在项目的urls.py文件中添加admin.autodiscover()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接