1. 程式人生 > >權限組件應用

權限組件應用

動態生成 pwd 分配權限 導航 分配 from 管理 rev name

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 %}
```

權限組件應用