權限組件應用
4.權限組件的應用 **
1. 拷貝rbac組件到新項目中,並且註冊
2. 遷移數據庫
1. 修改rbac用戶表
ManyToManyField 中 關聯寫上Role ,不要寫字符串
```
class User(models.Model):
"""用戶表"""
# name = models.CharField(‘用戶名‘, max_length=32)
# pwd = models.CharField(‘密碼‘, max_length=32)
roles = models.ManyToManyField(Role, verbose_name=‘用戶所擁有的角色‘, blank=True)
class Meta:
abstract = True # 遷移的時候不生成表,繼承使用 當基類
```
2. 已有的用戶表繼承rbac的User
```
class UserProfile(User)
```
3. 執行數據庫遷移的命令
python manage.py makemigrations
python manage.py migrate
3. 配置上rbac的路由
```python
url(r‘^rbac/‘,include(‘rbac.urls‘,namespace=‘rbac‘)),
4. 角色管理
http://127.0.0.1:8001/rbac/role/list/
添加角色 http://127.0.0.1:8001/rbac/role/add/
5. 菜單管理
http://127.0.0.1:8001/rbac/menu/list/
添加菜單 http://127.0.0.1:8001/rbac/menu/add/
6. 批量操作權限
http://127.0.0.1:8001/rbac/multi/permissions/
錄入權限的標題、分配一級菜單下的二級菜單和子權限
7. 分配權限
http://127.0.0.1:8001/rbac/distribute/permissions/
權限分配的視圖中 rbac的用戶類替換成 使用用戶表的類
添加用戶 給用戶分配角色 給角色分配權限
8. 應用上權限
1. 加上權限的中間件
```
MIDDLEWARE = [
...
‘rbac.middlewares.rbac.RbacMiddleWare‘
]
```
2. 添加上權限的相關配置
```
# 權限相關的配置
# 白名單
WHITE_LIST = [
r‘^/crm/login/$‘,
r‘^/crm/reg/$‘,
r‘^/admin/.*‘,
]
# 免認證的URL地址
NO_PERMISSION_LIST = [
r‘^/crm/index/$‘,
]
# 存權限的SESSION KEY
PERMISSION_SESSION_KEY = ‘permission‘
# 存菜單的SESSION KEY
MENU_SESSION_KEY = ‘menu‘
```
3. 登錄成功權限信息的初始化
```Python
from rbac.service.init_permission import init_permission
認證成功:
# 進行權限信息的初始化(保存權限信息 菜單信息 登錄狀態)
init_permission(request,obj)
```
9. 動態生成二級菜單
```
<div class="menu-body">
{% load rbac %}
{% menu request %}
</div>
```
加上CSS JS
```
<link rel="stylesheet" href="{% static ‘rbac/css/menu.css‘ %} "/>
<script src="{% static ‘rbac/js/menu.js‘ %} "></script>
```
10. 路徑導航
```
{% breadcrumb request %}
```
11. 權限控制到按鈕級別
```html
{% if request|has_permission:‘add_class‘ %}
<a class="btn btn-primary" href="{% reverse_url request ‘add_class‘ %}">添加</a>
{% endif %}
```
權限組件應用