⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

基于属性的访问控制(ABAC)后端实现

超越 RBAC,根据请求上下文(用户属性、资源属性、环境)动态计算权限。 · 难度:入门 · +10XP

基于属性的访问控制(ABAC)后端实现

Django 内建 permission 只支持角色-权限二元关系。本课教你编写自定义认证后端,实现 ABAC:定义策略规则文件(JSON/YAML),根据用户部门、文档密级、访问时间等属性动态判定。你将扩展 ModelBackend.has_perm,并配合信号机制缓存策略决策,提升性能。

# abac_backend.py
from django.contrib.auth.backends import ModelBackend
from myapp.policy_engine import evaluate_policy

class ABACBackend(ModelBackend): def has_perm(self, user_obj, perm, obj=None): # 先检查 Django 自带权限 if super().has_perm(user_obj, perm, obj): return True # ABAC 策略校验 return evaluate_policy(user=user_obj, permission=perm, resource=obj)

# policy_engine.py (伪代码) def evaluate_policy(user, permission, resource): if user.is_superuser: return True # 根据属性规则判断 return user.department == resource.owner_department and \ user.clearance >= resource.security_level

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0