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

广州行业网站建设商洛网站建设求职简历

广州行业网站建设,商洛网站建设求职简历,iis添加asp网站,网站 上一篇 下一篇Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统(django.contrib.auth)提供了 身份验证(Authentication) 和 权限管理(Authorization),能够快速实现 用户管理、权限控制、管理员后台…

Django 自带的用户系统与 RBAC 机制

Django 自带的用户系统(django.contrib.auth)提供了 身份验证(Authentication)权限管理(Authorization),能够快速实现 用户管理、权限控制、管理员后台 等功能,同时具备 RBAC(基于角色的访问控制,Role-Based Access Control) 的基本实现。本文将详细介绍 Django 用户系统的功能、管理员账号创建、RBAC 机制及其扩展方案。


一、Django 自带用户系统的作用

Django 自带的用户系统主要用于 用户身份管理、身份验证、权限与授权、用户管理后台 以及 扩展性,使开发者能够快速实现用户相关功能,而无需从零编写。

(一)用户身份管理

Django 提供了默认的 User 模型,其中包含:

  • 基本字段usernamepasswordemail
  • 权限字段is_active(是否激活)、is_staff(是否是后台管理员)、is_superuser(是否是超级用户)
  • 用户创建
    • User.objects.create_user():创建普通用户
    • User.objects.create_superuser():创建超级管理员

(二)身份验证(Authentication)

  • 密码存储:Django 采用 PBKDF2、Argon2、BCrypt 等安全算法存储密码
  • 登录与退出
    • authenticate():验证用户名和密码
    • login():记录用户 session
    • logout():清除用户 session,注销登录
  • 自动处理用户 session:可通过 request.user 直接获取当前登录用户

(三)权限与授权(Permissions & Authorization)

Django 的权限管理体系包含 用户权限、组权限、对象权限

  • 用户权限:通过 is_staffis_superuser 控制
  • 组权限:使用 Group 模型批量管理权限
  • 对象权限:支持模型级权限(add_xxxchange_xxxdelete_xxx
  • 权限检查
    • @login_required 限制访问
    • @permission_required("app_label.permission_name") 控制权限
    • request.user.has_perm("app_label.permission_name") 检查权限

(四)用户管理后台

Django 自带 admin 后台(django.contrib.admin),可快速管理 用户、权限、组,无需额外开发界面。

(五)扩展性

  • 自定义用户模型:通过 AbstractUserAbstractBaseUser 进行扩展
  • 扩展用户字段:如手机号、头像等
  • 第三方认证:可集成 OAuth(Google、GitHub 登录)或 JWT(DRF Simple JWT)

二、管理员账号的创建与管理

(一)如何创建管理员账号?

Django 不会自动创建管理员账号,需要手动执行以下命令:

python manage.py createsuperuser

随后输入 用户名、邮箱、密码 创建管理员账户。

(二)如何使用管理员账号登录?

  1. 访问 Django Admin 后台
    http://127.0.0.1:8000/admin/
    
  2. 使用 createsuperuser 创建的账号登录。

(三)如何查看或修改管理员账号?

  • 在数据库中查找超级管理员
    SELECT username, email FROM auth_user WHERE is_superuser=1;
    
  • 修改管理员密码
    python manage.py changepassword admin
    

三、Django 的 RBAC(基于角色的访问控制)机制

Django 自带 RBAC 的基础实现,主要通过 用户(User)、权限(Permission)、组(Group) 进行管理。

(一)用户(User)

  • 每个用户可以 独立拥有权限归属于某个组(Group),继承组权限。

(二)权限(Permission)

Django 提供了 基于模型的权限,默认包括:

  • add_modelname(添加权限)
  • change_modelname(修改权限)
  • delete_modelname(删除权限)
  • view_modelname(查看权限)
权限检查
  1. 代码中检查权限
    if request.user.has_perm('app_label.permission_name'):# 用户有权限
    
  2. 使用装饰器
    from django.contrib.auth.decorators import permission_required@permission_required('app_label.permission_name', raise_exception=True)
    def my_view(request):pass
    

(三)组(Group)

Group 允许批量管理权限,方便将权限分配给多个用户。例如:

from django.contrib.auth.models import Group, Permission# 创建一个 "编辑" 组
editor_group = Group.objects.create(name='Editor')# 获取某个权限
permission = Permission.objects.get(codename='change_article')# 给 "编辑" 组添加权限
editor_group.permissions.add(permission)# 将用户加入 "编辑" 组
user.groups.add(editor_group)

四、Django RBAC 机制的局限性及扩展

Django 默认的 RBAC 较为基础,存在以下局限:

  • 权限是基于模型的,无法控制对象级权限(如用户只能编辑自己创建的文章)
  • 没有层级角色,管理员无法管理某个组
  • 没有前端 UI,只能通过 Django Admin 或代码管理

(一)扩展 Django RBAC

1. 自定义权限系统
  • 继承 AbstractUserAbstractBaseUser 自定义用户模型
  • 设计 UserRole 表,实现 用户 → 角色 → 权限 关系
2. 使用 django-guardian 实现对象级权限
  • django-guardian 允许用户对特定对象(如某篇文章)赋权:
    from guardian.shortcuts import assign_permassign_perm('change_article', user, article)  # 允许 user 修改特定文章
    
3. 使用 django-rules 规则引擎
  • 通过函数定义权限规则:
    import rules@rules.predicate
    def is_author(user, article):return article.author == user
    

五、总结

功能Django 默认 RBAC扩展方案
用户管理
组管理
基于模型权限
对象级权限django-guardian
细粒度角色管理自定义模型
动态权限规则django-rules

Django 自带用户系统 提供了 用户管理、身份验证、权限控制,并包含 基础 RBAC 机制,但如果需要 更复杂的权限管理(如对象级权限、动态规则),建议使用 django-guardian、django-rules 或自定义 RBAC 方案

http://www.dtcms.com/a/595182.html

相关文章:

  • 潍坊网站制作 熊掌号wordpress做导航页面模板
  • 网站导航固定代码网站建设与网页设计可行性分析报告
  • 个人网站怎么推广wordpress 表格 链接
  • 建设局网站打不开是什么原因做网站赚大钱
  • 手机做网站的步骤wordpress难度
  • 服装企业营销网站建设好看的论坛源码
  • 本地建设网站flash个人网站模板
  • 杭州做公司网站哪家好大型公司为什么做网站
  • 建站宝盒 源码WordPress和帝国安全
  • 网站建设交接清单网站如何接广告
  • 永嘉哪里有做网站亚马逊官网中国网页版
  • 网站产品页面目前会展相关网站的建设情况
  • 天河商城网站建设中企动力常州分公司
  • Rust底层深度探究:自定义分配器(Allocators)——控制内存分配的精妙艺术
  • 商城网站开发教程应用软件有哪些系统
  • 南京科技网站设计有特点青岛网站设计工作室
  • 封开网站建设wordpress主题下载失败
  • php 微信 网站开发互联网企业网站
  • 建设一个招聘网站的策划网站建设課程
  • 郑州模板建站代理三亚凤凰镇网站建设兼职招聘网
  • 建一个网站大概需要多少钱舟山市建设信息港网站打不开
  • 求职网站怎么做安徽省安徽省建设工程信息网站
  • 建设新闻博客类网站要多大空间年度考核表个人总结网站建设
  • 学校网站建设都是谁做的no.7极简wordpress博客主题
  • 初创公司网站设计苏州上海高玩seo
  • 金华官方网站建设百度指数网址
  • 长沙网站推广和优化网站开发语言用什么好
  • 专业网站建设集团crm客户管理系统源码
  • 电商网站有哪些类型flash 如何做游戏下载网站
  • 网格系统网站微信小程序平台入口