littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Django框架的RBAC权限管理系统

项目简介

本项目是基于Django框架构建的RBAC(Role-Based Access Control)权限管理系统。RBAC作为广泛应用于企业级应用的权限管理模型,通过角色管理用户权限,实现细粒度权限控制。此系统旨在为任意业务系统提供灵活、高效的权限管理解决方案。

项目的主要特性和功能

  1. 用户管理:支持用户信息的增、改、删操作,用户表结构可与RBAC用户表建立继承关系。
  2. 角色管理:能定义和管理不同角色,每个角色具备特定权限,支持角色的增、改、删。
  3. 权限管理:实现细粒度权限控制,可精确到按钮级别,能自动发现和排除特定URL的权限配置。
  4. 权限初始化:用户登录时自动初始化权限信息,可配置权限和菜单在Session中的存储键。
  5. 中间件支持:通过中间件进行权限校验,保证只有授权用户能访问特定资源,可配置白名单和无需权限的URL列表。
  6. 业务逻辑开发:具备灵活的路由配置,支持反向生成URL和权限控制,可将业务系统中的用户表与RBAC用户表集成。

安装使用步骤

环境准备

安装Python环境,确保已安装Django框架和相关依赖库。

项目初始化

复制项目代码到本地,在项目根目录下运行python manage.py migrate命令初始化数据库。

配置文件设置

settings.py中配置业务系统中的用户表路径: python RBAC_USER_MODLE_CLASS = "app01.models.UserInfo" 配置权限和菜单在Session中的存储键: python PERMISSION_SESSION_KEY = "luffy_permission_url_list_key" MENU_SESSION_KEY = "luffy_permission_menu_key"

权限信息录入

在URL配置中添加RBAC的路由分发,并设置namespace: python urlpatterns = [ ... url(r'^rbac/', include('rbac.urls', namespace='rbac')), ] 访问RBAC提供的地址进行权限信息的录入和管理。

用户登录逻辑

编写用户登录逻辑,并在登录成功后初始化用户权限信息: ```python def login(request): if request.method == 'GET': return render(request, 'login.html')

user = request.POST.get('username')
pwd = request.POST.get('password')

user_object = models.UserInfo.objects.filter(name=user, password=pwd).first()
if not user_object:
    return render(request, 'login.html', {'error': '用户名或密码错误'})

init_permission(user_object, request)

return redirect('/index/')

```

权限校验

settings.py中配置中间件进行权限校验: python MIDDLEWARE = [ ... 'rbac.middlewares.rbac.RbacMiddleware', ] 配置白名单和无需权限的URL列表: ```python VALID_URL_LIST = [ '/login/', '/admin/.*' ]

NO_PERMISSION_LIST = [ '/index/', '/logout/', ] ```

粒度到按钮级别的控制

在模板中使用RBAC提供的模板标签进行按钮级别的权限控制: html {% if request|has_permission:'host_add' %} <a class="btn btn-default" href="{% memory_url request 'host_add' %}"> <i class="fa fa-plus-square" aria-hidden="true"></i> 添加主机 </a> {% endif %}

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】