權限管理之大致流程


原理:
1、簡單管理
2、角色多管理(就要設置權限)
  a. 登錄
    - session中放置用戶信息(檢測是否已經登錄)
    - session中放置權限信息(檢測是否有權訪問)
    {
      "/index.html":[get,delete,select ,update],
      "/order.html":[get,delete,select ,update],
    }
    - session中放置菜單,權限信息(用於生成多級的動態菜單)。就不用每次在數據庫里面去取數據了
  b. 訪問網站其他功能:http://www.baidu.com/xxx.html
    - 獲取當前訪問的url,request.path_info
    -
      匹配/xxx.html?md=get
      根session里面的權限信息進行匹配(檢測是否有權訪問)
      {
        "/index.html":[get,delete,select ,update],
        "/order.html":[get,delete,select ,update],
        "/xxx.html":[get,delete,select ,update],
      }
      如果匹配成功之后,在進行一次匹配
      第一次匹配的是url,第二次匹配的是方法


      request.permission_code = "get"
      request.permission_code = [get,delete]
      目的是傳到視圖函數,當視圖函數寫業務邏輯的時候根據這兩個值來判定視圖該怎么寫

      ps:兩次匹配的時候都是用中間件來實現的
  c.在視圖中:
      得到這兩個值,
      request.permission_code = "get" #業務邏輯的增加,修改等
      request.permission_code = [get,delete] #為了給前端顯示功能按鈕


  e.創建動態菜單【多級菜單】
      - 當前用戶的權限(從數據庫獲取,但是這樣每次請求數據庫效率不高,可以放置在session中)
      - 所有的菜單 (從數據庫獲取)
      - 讓權限和菜單實現掛靠
        這個菜單只是在頁面上使用,推薦用simple_tag來用
        1、權限掛到菜單上
        2、菜單父子關系處理
        3、遞歸生成菜單
      輔助:
        css
        js


基本使用:
  1、導入rbac
    - 表
    - 中間件
    - service 初始化操作
    - simple_tag

  2、注冊app
  3、用戶登錄
      初始化權限信息:service.init_permission(request,user_id)
      本質就是吧權限的信息和菜單的信息放在session中
  4、在settings中配置中間件
  5、導入{% rbac_menu request %}
  其他配置
....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM