1. 程式人生 > >許可權系統的應用

許可權系統的應用

 許可權系統的應用
 1. 拷貝rbac 到新專案中
 
 2. 註冊rbac APP 以及配置資訊
 
  PERMISSION_SESSION_KEY = 'permissions'
  MENU_SESSION_KEY = 'menus'
  WHITE_URL_LIST = [
   r'/login/$',
   r'^/logout/$',
   r'^/reg/$',
   r'^/admin/.*',
  ]
 3. 資料庫遷移
  刪除原有的遷移檔案的記錄
  執行命令
  
 4. 在根目錄下的urls.py中新增rbac的相關URL
  # 許可權的url
  url(r'rbac/', include('rbac.urls',namespace='rbac')),
  
 5. 錄入許可權資訊
  - 角色管理
  - 選單管理
  - 許可權管理 
                          路由中必須有name
                                              寫出許可權列表
   - 錄入原系統的URL
   - 錄入rbac的URL
    - 許可權批量操作的檢視中ignore_namespace_list中去掉rbac
      # 獲取路由系統中所有URL
      router_dict = get_all_url_dict(ignore_namespace_list=['admin'])
   新增父許可權,必須先選擇所屬選單,然後必須更新一下   新增父許可權 就會有所需求的資訊
   
 6. 分配許可權
  - 使用者關聯
   from rbac.models import User
   user = models.OneToOneField(User, null=True, blank=True)
   
  - 給使用者分角色
  - 給角色分許可權
  在2個表建立關聯  改表內容
  
 7. 登入應用許可權
  匯入許可權的那個函式
   from rbac.server.init_permission import init_permission
  - 登入成功後執行init_permission(request, obj)
   ret=init_permission(request,obj)
               if ret:
                   return ret
  - 修改init_permission(函式)
   user   ——》 user.user
       try:
        permission_query = user.user.roles.filter(permissions__url__isnull=False).values(
            'permissions__url',
            'permissions__title',
            'permissions__id',
            'permissions__name',
            'permissions__parent_id',
            'permissions__parent__name',
            'permissions__menu_id',
            'permissions__menu__title',
            'permissions__menu__icon',
            'permissions__menu__weight',
        ).distinct()
    except Exception as e:
        return HttpResponse('請聯絡管理員:電話:110')   - 應用許可權校驗中介軟體
    'rbac.middlewares.rbac.PermissionMiddleware',
   
   
 8. 應用二級選單和麵包屑導航
  注意模板 layout
   有block  css  js content
   
  - 二級選單
       <link rel="stylesheet" href="{% static 'css/menu.css' %}">
    {% load rbac %}
                {% menu request %}
    <script src="{% static 'js/menu.js' %}"></script>
    
  - 麵包屑導航
   {% breadcrumb request %}
   
 9. 許可權控制到按鈕級別
  {% load rbac %}   {% if request|has_permission:'add_customer' %}
   <a href="{% url 'add_customer' %}?{{ query_params }}" class="btn btn-primary btn-sm">新增</a>
  {% endif %}