1. 程式人生 > >將許可權元件應用到新專案

將許可權元件應用到新專案

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

 

  1. 拷貝rbac元件到新的專案中,註冊app

  2. 修改使用者表,繼承rbac中的User