將許可權元件應用到新專案
阿新 • • 發佈:2019-01-06
1. 拷貝rbac元件到新的專案中,註冊app
2. 修改使用者表,繼承rbac中的User
class User(models.Model): """ 使用者表 """ # name = models.CharField(max_length=32, verbose_name='名稱') # password = models.CharField(max_length=32, verbose_name='密碼') roles = models.ManyToManyField(Role, verbose_name='使用者擁有的角色', blank=True) # def __str__(self): # return self.name class Meta: abstract = True # 資料庫遷移時候不會生成表,用來做基類 class UserProfile(User, models.Model):
3.執行資料庫遷移命令
1.刪除rbac下的migrations中的記錄
2. 注掉admin中的User表
3.roles = models.ManyToManyField(Role, verbose_name='使用者擁有的角色', blank=True) # 關聯的欄位不要寫成字串形式
4.設定rbac的url
url(r'rbac/', include('rbac.urls',namespace='rbac'))
5.選單管理
6.許可權的錄入
1.所有的url要有別名name
2.不要忽略rbac namespace
3.注意url和別名的長度
4.構建層級結構
7.角色管理
8. 分配許可權
1.注意用新的使用者表替換rbac中的User
2.給不同角色分配許可權
3.給不同使用者分配角色
9.應用上許可權
1.應用中介軟體 在settings中寫上許可權的配置
#許可權的key PERMISSION_SESSION_KEY = 'permissions' # 選單的key PERMISSION_MENU_KEY = 'menus' WHITE_LIST = [ r'^/login/$', r'^/reg/$', r'^/admin/.*', ] NO_PERMISSION_LIST = [ r'^/index/$', r'^/logout/$', ] # 路徑導航 BREADCRUMB = 'breadcrumb_list' # 路徑導航 CURRENT_MENU = 'current_parent_id'
2.登陸成功後許可權的初始化
from rbac.service.permission import init_permisson # 許可權資訊的初始化 init_permisson(request,obj)
10.動態生成二級選單
1.在母版中使用
```
匯入CSS js
{% load rbac %}
{% menu request %}
```
11.應用路徑導航
{% breadcrumb request %}
12.許可權控制到按鈕級別
{% load rbac %} {% if request|has_permission:"consult_add" %} <a href="{% url 'consult_add' %}" class="btn btn-primary btn-sm">新增</a> {% endif %}
-
-
修改使用者表,繼承rbac中的User