项目简介
本项目是基于Django框架构建的RBAC(Role-Based Access Control)权限管理系统。RBAC作为广泛应用于企业级应用的权限管理模型,通过角色管理用户权限,实现细粒度权限控制。此系统旨在为任意业务系统提供灵活、高效的权限管理解决方案。
项目的主要特性和功能
- 用户管理:支持用户信息的增、改、删操作,用户表结构可与RBAC用户表建立继承关系。
- 角色管理:能定义和管理不同角色,每个角色具备特定权限,支持角色的增、改、删。
- 权限管理:实现细粒度权限控制,可精确到按钮级别,能自动发现和排除特定URL的权限配置。
- 权限初始化:用户登录时自动初始化权限信息,可配置权限和菜单在Session中的存储键。
- 中间件支持:通过中间件进行权限校验,保证只有授权用户能访问特定资源,可配置白名单和无需权限的URL列表。
- 业务逻辑开发:具备灵活的路由配置,支持反向生成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】