首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何限制Django admin中的非超级用户选择所有用户组/权限?

在Django admin中,限制非超级用户选择所有用户组/权限可以通过自定义用户管理模型来实现。以下是一种实现方式:

  1. 创建一个新的用户管理模型,例如CustomUserAdmin,并从django.contrib.auth.admin import UserAdmin继承。
  2. CustomUserAdmin中重写formfield_for_manytomany方法,该方法用于自定义多对多字段的显示和选择行为。
代码语言:txt
复制
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group, Permission

from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "groups" or db_field.name == "user_permissions":
            # 限制非超级用户只能选择自己所属的用户组和权限
            if not request.user.is_superuser:
                kwargs["queryset"] = db_field.related_model.objects.filter(
                    id__in=request.user.groups.values_list("id", flat=True)
                )
        return super().formfield_for_manytomany(db_field, request, **kwargs)

admin.site.unregister(Group)
admin.site.unregister(Permission)
admin.site.register(CustomUser, CustomUserAdmin)

在上述代码中,我们重写了formfield_for_manytomany方法,并在非超级用户访问时,将用户组和权限的选择范围限制为当前用户所属的用户组。

  1. admin.py中注册CustomUser模型,并取消注册默认的GroupPermission模型。
代码语言:txt
复制
from django.contrib import admin
from .models import CustomUser

admin.site.register(CustomUser, CustomUserAdmin)

通过以上步骤,非超级用户在Django admin中只能选择自己所属的用户组和权限,从而限制了其选择所有用户组/权限的能力。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云官方文档或咨询腾讯云的客服人员获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

35.Django2.0文档

点击那个图标将会弹出一个窗口,在那里你可以选择想要添加publisher。  第七章 用户用户组权限 因为你是用超级用户登录,你可以创建,编辑和删除任何对像。...然而,不同环境要求有不同权限,系统不允许所有人都是超级用户。 管理工具有一个用户权限系统,通过它你可以根据用户需要来指定他们权限,从而达到部分访问系统目的。...超级用户标志:它赋予用户在管理界面添加、修改和删除任何项目的权限。 如果一个用户帐号有这个标          志,那么所有权限设置(即使没有)都会被忽略。...普通活跃,超级用户管理用户可以根据一套设定好许可进入。 管理界面每种可编辑对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。...如果你给某人编辑用户权限,他可以编辑自己权限,这种能力可能不是你希望。 赋予一个用户修改用户权限,本质上说就是把他变成一个超级用户。你也可以给组中分配用户

11.3K100

Django官方文档小结(四) -- 用户权限

在settings.py配置 AbstractUser AUTH_USER_MODEL = 'app名.UserProfile' 普通用户创建 创建用户最直接方法是使用包含 create_user...(permission, permission, …) 用户对象删除权限 user_obj.user_permissions.clear() 用户对象清除所有权限 #3.1 权限表结构 from django.contrib.auth.models...(group, group, …) 用户对象删权限组 user_obj.groups.clear() 用户对象清除所有权限组 #4.1 权限组表结构 from django.contrib.auth.models...# 因为之前已经把用户权限全部清空,用户被加到权限组后, # 会拥有权限权限,但是并不是自己权限,在数据库没有记录,数据库只会记录用户在哪个权限如何查看用户是否拥有权限??...() 用户组所有用户退出组 g_player.user_set.clear() #5 自定义权限 未完待续 !

40130

关于“Python”Django 管理网站核心知识点整理大全52

在本节,我们将建立管理网站,并通过它 使用模型Topic来添加一些主题。 1. 创建超级用户 Django允许你创建具备所有权限用户——超级用户权限决定了用户可执行操作。...最严 格权限设置只允许用户阅读网站公开信息;注册了用户通常可阅读自己私有数据,还可 查看一些只有会员才能查看信息。为有效地管理Web应用程序,网站所有者通常需要访问网站 存储所有信息。...(ll_env)learning_log$ 你执行命令createsuperuser时,Django提示你输入超级用户用户名(见1)。...现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/,并输入你刚创建 超级用户用户名和密码,你将看到类似于图18-2所示屏幕。...这个网页让你能够添加和修改 用户用户组,还可以管理与刚才定义模型Topic相关数据。

14410

11.如何为CDSW集成RedHat7OpenLDAP认证

本篇文章Fayson主要介绍如何为CDSW集成RedHat7OpenLDAP并指定用户组分配访问权限。...CDH5.14安装CDSW1.3》和《如何在CDH5.15安装CDSW1.4》,这里就不再重复讲Navigator安装了。...LDAP User Groups 允许访问CDSW服务组,空为所有用户都可以访问 LDAP Full Administrator Groups cdsw_admin 为指定用户组赋予超级管理员权限...使用cdsw_a用户登录访问,该用户所属组为cdsw_admin组,该组拥有超级管理员权限 ? 到此为止完成CDSW服务集成及测试。...在CDSW如果需要限制用户组访问或为用户组赋予超级管理员权限,均是通过登录成功用户DN(uid=cdsw_a,ou=People,dc=fayson,dc=com)查找到用户所属组与设置访问列表及权限列表组进行对比

99230

如何使用Sentry为包含特殊字符用户组授权

Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等——允许Admin用户通过视图方式限制普通用户对行或列访问,或者对数据进行脱敏处理。...例如,对于某特定数据集,你可以分配给反欺诈小组查看所有特权,给分析师查看敏感或PII(personally identifiable information)列权限,给数据接收流插入新数据到HDFS...4、执行“grant all on server server1 to role admin;”语句,为admin角色赋予超级权限 ?...5 总结 1、Sentry对用户组授权,要求用户组名由字母数字或者下划线“_”组成。如果用户组名必须要包含非下划线字母数字字符,则必须将用户组名放在反引号(`)以执行该命令。...2、启用Sentry后,必须给用户组授权相应权限才能执行对应操作,比如我只给“luo-kang”用户组授予了default库SELECT权限,那么“luo-kang”用户可以查看default库内所有内容

2.1K20

Django-guardian实现对象级别的权限控制

特征 Django对象全新啊 匿名用户支持 高级API 经过严密测试 Django admin整合 装饰器 安装 要求Django1.7或更高版本 pip install django-guardian...guardian匿名用户Django匿名用户不同。Django匿名用户在数据库没有条目,但是Guardian匿名用户有。...例如,当使用django-polymorphic适用于所有子模型基本模型上权限时,这是有用。...也可以使用get_user_perms获得直接分配权限用户(而不是从它超级用户权限或组成员资格继承权限)。同样,get_group_perms仅返回其是通过用户组权限。...它为Django应用程序提供基本内容管理。具有访问管理面板用户可以管理系统提供用户,组,权限和其他数据。 django-guardian 为Djangoadmin提供简单对象许可管理集成。

3.2K30

如何在CDH中使用HBaseACLs进行授权

,范围定义如下: Superuser : 超级用户可以执行HBase中所有操作及任何资源(如:hbase用户) Global: 在全局范围内授予权限,可以在超级管理下创建多种集群管理员 Namespace...使用hbase超级管理员,为admin用户组全局范围授权,授权admin用户有创建表权限 [root@cdh01 ~]# klist [root@cdh01 ~]# hbase shell hbase...查看用户权限 ? 测试总结: 拥有CA权限admin用户,可以在HBase库创建NameSpace和Table,并可以对自己新建表进行读、写、删除等操作,但不能操作admin用户创建表。...在前面通过hbase超级管理员为admin用户赋予了全局CA权限,这里使用admin用户为fayson用户授权my_ns_admin空间所有权限 hbase(main):018:0* whoami...4.当为用户用户组拥有CA权限时,用户用户组创建表时会默认为当前操作用户添加该表RWXCA权限 5.可以通过user_permission ‘.*’查看当前HBase所有的授权 6.通过revoke

2.5K51

接口测试平台代码实现14:注册功能和后台管理

调用django内部函数auth.logout函数 来实现退出功能。 给用户跳转到登陆页面。...现在我们直接进入网址:127.0.0.1:8000/admin/ 就进入了一个后台登陆页面,是不是很神奇?居然藏着这样一个地方可以管理所有平台数据和用户!...好 这里我们只能通过管理员账号密码 来登陆。但是我们貌似并不知道管理员账号是什么?我们之前自己注册都只是普通用户,根本无权限登陆这个后台。那么我们要如何创建超级管理员呢?...上面是groups用户组,也就是说我们实际上可以给用户分组,然后不同组赋予不同权利。 下面Users是用户表。我们点进去看看: 可以看到我们创建俩个账户都在这,一个超管,一个普通用户。...我们可以手动在这里 设置各个用户信息,包括增删改查! 这个后台用处 还有处理其他数据。不过我们目前没有其他数据,所以只展示了用户组用户表。 后续我们会经常使用这个平台

60440

Python自动化开发学习-Django

在往下还有 “用户权限” ,默认所有的账户都是一张表权限都没有的,包括超级管理员。但是超级管理员账户勾选了 “超级用户状态(指明该用户缺省拥有所有权限。)” 所以无视这个设置。...普通用户就需要在这里添加权限了。这里有包括django默认表以及我们自己创建表。权限比较粗,基本上就是控制这个用户可以操作那些表,我没找到只读权限。...如果是多对多外键,需要用这个: filter_horizontal = () # 这里并没有多对多字段,就空着吧 这个效果可以参考用户权限分配里用户组用户权限操作,多选情况这么设置可以有更好体验...这是django提供方法,所以也支持用户组。 只要能拿到User对象和权限名,就是获取到一个True或False结果。...限制请求方法 限制请求使用参数:必须包含某系参数,但是不关心值是多少,把参数记录在一个列表里 限制请求使用参数和值:必须包含特定参数,并且值也必须匹配,把键值对记录在一个字典里 不过也不是所有权限都是可以用装饰器来实现

1.7K30

Python 项目实践三(Web应用程序)第一篇

admin.py和views.py将在稍后介绍。 2.1 定义模型 我们来想想涉及数据。每位用户都需要在学习笔记创建很多主题。用户输入每个条目都与特定主题相关联,这些条目将以文本方式显示。...模型告诉Django如何处理应用程序存储数据。在代码层面,模型就是一个类,就像前面讨论每个类一样,包含属性和方法。...在本节,我们将建立管理网站,并通过它使用模型Topic来添加一些主题。 2.3.1 创建超级用户 Django允许你创建具备所有权限用户——超级用户权限决定了用户可执行操作。...为在Django创建超级用户,请执行下面的命令并按提示做 2.3.2 向网站注册模型 Django自动在管理网站添加了一些模型,如User和Group,但对于我们创建模型,必须手工进行注册。...现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/,并输入你刚创建超级用户用户名和密码,这个网页让你能够添加和修改用户用户组,还可以管理与刚才定义模型

2K60

django 1.8 官方文档翻译:13-1-2 使用Django认证系统

它提供一种分配权限给特定用户用户组方法。 它被Djangoadmin站点使用,但欢迎你在你自己代码中使用。...可以像其它任何Django模型一样创建和删除用户。可以创建组,并分配权限用户和组。admin还会保存和显示对用户模型编辑日志。...如果一个账号具有添加用户权限但是没有权限修改他们,该账号将不能添加用户。为什么呢?因为如果你具有添加用户权限,你将可以添加超级用户,这些超级用户将可以修改其他用户。...所以Django同时要求添加权限和修改权限作为一种轻量安全措施。 仔细考虑一下你是如何允许用户管理权限。...如果你了一个超级用户编辑用户能力,这和给他们超级用户权限在最终效果上是一样,因为他们将能够提升他们自己下面的用户权限

4.6K20

Django实战-信息资讯-CMS权限管理

可以通过admin将这些权限分配给不同用户。 ? auth_group 用户组 ? auth_group_permissions 用户组权限 ? auth_permission 用户权限 ?...,可以追踪项目中所有app和model对应关系,并记录在ContentType表。...② Group 用户组 from django.contrib.auth.models import Group 用户组(Group)和 User 模型是多对多关系。...其作用在权限控制时可以批量对用户权限进行管理和分配,而不用一个一个用户分配,节省工作量。将一个用户加入到一个Group后,该用户就拥有了该Group所分配所有权限。...User 对象中有一个名为 groups 多对多字段, 多对多关系由 auth_user_groups数据表维护。Group 对象可以通过 user_set 反向查询用户组用户

97510

CDP-DCHue集成FreeIPALDAP认证

同步LDAP用户组 重启成功后使用Hue超级管理员登录,我们这里是admin用户超级管理员,同时admin用户在freeipa也存在,如果不存在,则需要根据第四章同步一个ldap用户到hue系统...用户登录测试 ? 这里看到使用原来admin用户密码已无法正常登录,因为在freeIPALDAPadmin这个用户密码不是数据库密码。...本页说明如何导入Hue用户和组并将其与LDAP服务器同步。请参阅使用LDAP对Hue用户进行身份验证以确保配置正确。 提示:导入和同步后,学习如何限制权限。...LDAP组 导入并同步一组所有用户 sync_groups_at_login 登录时自动同步组成员身份 先决条件 注意: Hue不支持一次导入所有组。...要将Hue用户和组与LDAP服务器同步: • 必须将Hue配置为通过LDAP进行身份验证。请参阅使用LDAP验证Hue用户。 • 登录用户必须具有Hue超级用户权限

1.5K20

经过几个月学习python,运维管理平台实现与学习心得

大体能实现,很多还需要细改,界面 软件架构:     前端:AdminLTE-2.4.2 ajax     后端:django 2 mysql 5.6 python 3.6 功能说明:     ...1.用户         添加用户需要选择用户组,也可以禁用改用户,禁用后无法登陆系统     2.用户组权限:         普通用户组:只能看,以及主机功能操作,不能对系统增删操作(如用户组删除...,用户删除修改,主机删除,主机修改等)         超级用户组:可以对所有操作     3.主机管理:         添加主机前需要添加机房,主机添加到对应用户组,对应用户组才能看到对应服务器...(超级组可以看到所有)以及操作.     4.webssh采用是webconsole,采集主机信息用paramiko模块     5.日志,记录操作日志     6.其他功能(如上传下载,批量部署...学习是心酸历史~ 还会延续

12410

django开发个人简易Blog——数据模型

从图中可以看出创建了9个数据表,并且提示是否为系统创建一个超级管理员,为了以后登录系统,我们输入yes。 之后按照提示输入用户名及密码即可。...打开浏览器,在浏览器访问http://127.0.0.1:1989/admin ,出现如下登录界面: ? 输入刚刚创建超级用户用户名和密码,点击login按钮,即来到如下管理界面: ?...通过这个管理界面,可以方便用户组用户进行管理,并且有详细日志记录。 到目前为止,一个可以验证用户权限并且可管理用户组用户后台管理系统就可以完美的运行了,简直太方便了。...数据模型设计: 由于这只是一个简单博客,并且功能有限,所以,数据模型也是比较简单,仅包括文章表、分类表及评论表这三个表,至于用户验证部分,使用django自带用户表。...到这里基本功能都是可用,包括管理用户用户组、管理文章、分类、评论都可以通过自带后台管理界面来完成,当然了,能用并不代表好用,后面我会介绍怎么样开发自己后台管理功能,以及如何展示。

87480

Linux 基础

密码有限制:最少是 6 位,并且建议是大写+小写+数字组合 设置完成之后点击【下一步】 第二十七步:选择安装类型,这个时候选择【使用所有空间】,然后点击【下一步】 ? 然后选【将修改写入磁盘】 ?...第三十二步:设置新用户超级管理员用户),填写好之后点击【前进】 ? 第三十三步:设置时间,然后点击【前进】 ?...这个目录命令文件是给普通用户使用(超级管理员用户)。 /etc:Linux 下所有的配置文件都会存放到 etc 目录。 /home:是所有 root 用户家目录一个集合。...Root 用户超级用户) 在 Linux ,还有一个神一样存在用户,这就是 root 用户,因为在所有用户它拥有最大权限 ,所以管理着普通用户。...Root 用户超级用户) 在 Linux ,还有一个神一样存在用户,这就是 root 用户,因为在所有用户它拥有最大权限 ,所以管理着普通用户

3.8K34

用户查询操作权限命令

用户 user:使用操作系统的人 用户组 user group:操作系统具有相同系统权限一组用户 Linux 用户管理查看主要文件目录和用途 /etc/passwd 存储当前系统中所有用户信息...描述:sudo(Switch User and Do) 以超级管理员身份执行,当前用户身份没有改变,使用自身密码获取授权,超级权限是临时,root把本来只能超级用户执行命令赋予普通用户执行,sudo...注意事项: 1.root上编辑 /etc/sudoers 写得越简单,普通用户权限就越大. 2.Ubuntu系统提示用户不在 sudoers 文件错误解决方法,以admin用户以及用户组为例. #...切换到root账号 su - # 解除sudoers写入限制 chmod u+w /etc/sudoers # 为用户admin添加sudo权限 admin ALL=(ALL:ALL) ALL #...为用户组admin添加sudo权限 %admin ALL=(ALL) ALL # 将test用户添加到admin组并拥有一定sudo权限 usermod -G admin test # 切换用户

3.1K10

0648-6.2.0-配置Senty服务

1.1 启用Sentry服务前 1.确定安装Sentry服务前置条件,参考《0634-6.2.0-如何在CDH安装Sentry服务》前置章节。 2.设置Hive仓库目录权限。 ?...3.在Cloudera Manager禁用HiveServer2模拟(impersonation)。HiveServer2模拟允许使用连接用户而不是超级用户执行查询和访问HDFS文件。...这意味着,对Hive仓库表没有Sentry权限用户仍然可以绕过Sentry授权检查并对仓库表执行作业和查询,只要他们对该表HDFS文件具有权限即可。...运行Hive CLI,Spark和Sqoop用户必须是hive,hue或sentry用户,或者属于这3个group,你也可以将其他用户组增加到上面配置代理用户列表。...1.从Cloudera Manager进入Sentry服务,点击“配置”,搜索“admin”,在“sentry.service.admin.group”属性增加hive,hue和spark用户组,如果有请忽略该步骤

1.2K40
领券