当前位置: 首页 > news >正文

django-guardian:Django 对象级权限的简洁实现

文章目录

  • django-guardian:Django 对象级权限的简洁实现
    • 1、这玩意儿是干嘛的
    • 2、装起来麻烦吗
    • 3、怎么用
    • 4、Admin 里也能用
    • 5、适合哪些人用

django-guardian:Django 对象级权限的简洁实现

django-guardian 在 GitHub 上已经拿到 3,903 Star。

它是一个 Django 扩展,只做一件事:在 Django 自带的权限体系之上,补上对象级别的权限控制。Django 原生的权限模型管的是「能不能改所有文章」,guardian 让你能精确到「能不能改这一篇文章」。

1、这玩意儿是干嘛的

Django 自带的 auth 模块已经够用了,用户、组、权限表都建好了。但它有个局限:权限是全局的。你给某个用户分配了「change_post」权限,他就能改所有文章。

实际业务里这种粒度太粗了。一个协作平台里,A 用户只能编辑自己创建的项目,B 用户可以编辑团队项目但不能碰别的团队的东西。这种场景下,你需要的是针对单个对象的权限判定。

django-guardian 就是填这个坑的。它增加了一层 ObjectPermissionBackend,让你能给某个用户或某个组,针对某个具体对象分配权限。

2、装起来麻烦吗

不麻烦,三步搞定。

先装包:

uvadddjango-guardian

或者用 pip 也行:

pipinstalldjango-guardian

然后改配置。settings.py 里加两行:

INSTALLED_APPS=(...'guardian',)AUTHENTICATION_BACKENDS=('django.contrib.auth.backends.ModelBackend','guardian.backends.ObjectPermissionBackend',)

最后跑迁移:

python manage.py migrate

完事。

3、怎么用

核心就几个 shortcut 函数。最简单的场景:给某个用户针对某个对象授权。

fromdjango.contrib.auth.modelsimportUser,Groupfromguardian.shortcutsimportassign_perm jack=User.objects.create_user('jack','jack@example.com','topsecretagentjack')admins=Group.objects.create(name='admins')# 分配对象级权限assign_perm('change_group',jack,obj=admins)# 检查:针对这个具体对象,jack 有权限jack.has_perm('change_group',admins)# True# 但全局权限仍然没有jack.has_perm('change_group')# False

这就是 guardian 的关键设计:对象权限和全局权限分开存储、分开检查。has_perm('change_group', obj)查的是对象级表,has_perm('change_group')查的是 Django 原生的权限表,两者互不干扰。

4、Admin 里也能用

Django 的后台管理页面也可以集成 guardian。把 ModelAdmin 换成 GuardedModelAdmin,后台就会自动多出一个对象权限管理面板,直接在页面上给用户或组分配针对单个实例的权限。

fromdjango.contribimportadminfromguardian.adminimportGuardedModelAdminfrommyapp.modelsimportAuthorclassAuthorAdmin(GuardedModelAdmin):passadmin.site.register(Author,AuthorAdmin)

如果你在用 django-unfold 美化后台,guardian 也有现成的 contrib 模块支持,不需要自己写适配代码。

5、适合哪些人用

  • 做多租户系统、需要让不同用户只看到/操作自己数据的 Django 开发者
  • 做内容协作平台、需要细粒度权限控制的团队
  • 在 Django Admin 里就想完成权限分配、不想另搭一套权限后台的人

测试覆盖率 97.8%,维护得还算积极,文档也齐全。如果你在用 Django 且被全局权限的限制卡过,这个库值得看看。

  • 在 Django Admin 里就想完成权限分配、不想另搭一套权限后台的人

测试覆盖率 97.8%,维护得还算积极,文档也齐全。如果你在用 Django 且被全局权限的限制卡过,这个库值得看看。

http://www.jsqmd.com/news/977260/

相关文章:

  • 2026广州全屋定制选购指南:爱格板全屋定制源头工厂哪家好?欧雅尊盘点本地优质全屋定制工厂与源头厂家 - 栗子测评
  • 2026年6月太原精品粤菜商务宴请榜:5家靠谱餐厅推荐排位 - 外贸老黄
  • 【软件推荐】电子公章、印章生成器,免费制作
  • VidGear:Python 视频处理的一站式框架
  • 2026年 IGBT模块、功率模块、可控硅、二极管、整流桥、晶闸管厂家推荐排行榜:高性能与稳定品质之选 - 品牌发掘
  • Bilibili 视频合集时长计算最新脚本
  • 2026 年 6 月 福州小程序开发制作优质榜单 企业选型参考 - 软件测评师
  • 深度解析飞算 JavaAI 智能引导的五大步骤:AI 是如何把一句需求变成工程级 Java 代码的?
  • 革命性微信聊天记录永久保存与智能分析工具:掌握你的数字记忆主权
  • 视觉模型中的坐标漂移
  • 题题-4
  • Redis基础介绍与SpringDataRedis的基础使用
  • 102、日志分析工具:MATLAB与Python脚本
  • 2026年 烟台推拉门十大品牌推荐榜:钛镁合金/极窄边框/完美系统平开门与口袋门厂家实力解析 - 品牌发掘
  • 思维链 ,Anthropic Mythos模型的 Looped Transformer架构解析,claud为什么厉害性能优越的研究
  • C语言容器中数据的高效串行化和解串--下位机的C语言处理(1)
  • 如何高效管理九大网盘下载:JavaScript直链解析工具的完整指南
  • 走进ChatGLM-6B:把轻量级AI对话装进个人电脑的实用指南
  • 看懂参数不被坑|2026新手电钢琴选购指南,全段位机型精准推荐
  • 2026 温州防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南 - 宅安选房屋修缮
  • 后湖大道空调维修|后湖大道空调移机|后湖大道空调加氟|后湖大道空调回收 高性价比宅到家快速上门 - 武汉宅到家
  • RTSPtoWeb:如何用纯Go实现零依赖实时视频流转换的革命性架构
  • 103、飞控仿真环境搭建:Gazebo与PX4 SITL
  • 2026年最新的 北美黑胡桃木家具宋式美学家具 知名品牌 排行榜 北美黑胡桃木家具、宋式美学家具品牌推荐 国内 国际 - 奔跑123
  • MPC8245嵌入式Linux内核移植实战:从源码修改到硬件配置全解析
  • 2026年 2,4-二氟硝基苯厂家推荐榜单:高纯度合成工艺与医药中间体应用实力品牌深度解析 - 品牌发掘
  • 2026北京配眼镜推荐,学生党去哪,性价比和品质都要 - 配眼镜新资讯
  • 小白 / 转行程序员 AI 大模型全攻略:行业前景、6 大岗位详解 + 七阶段学习路线
  • 2026年 钢丝电缆收卷机厂家推荐榜单:排线机/收线机/自动收线机精密移位与多功能机型实力解析 - 品牌发掘
  • AMHS自动物料搬运系统实战