crm專案 許可權元件

2022-05-14 18:18:35 字數 1954 閱讀 2524

###############    表結構分析     ################

"""

表結構設計:

1,四張表

使用者表,userinfo,這個表本身不會被建立,而是用來被真正的使用者表做繼承,

角色表,role,

選單表,menu,

許可權表,permission,

2,關聯關係

使用者表和角色表多對多關聯,

角色表和許可權表多對多關聯,

許可權表和選單表一對多關聯,

"""

###############    提供的操作     ################

"""

提供的操作

1,角色新增,只是選單新增,

2,選單新增,

新增一級選單,這是在選單表中儲存的

新增二級選單,如果許可權表關聯了選單表,就是選單,沒有關聯就不是選單,

新增選單許可權,對於非二級選單的需要關聯是二級選單的id,用來展開許可權,這個設計可以把許可權控制到按鈕級別,

這種是在建立選單和許可權的關係,

3,分配許可權,可以為客戶分配角色,為角色分配許可權,

這種其實就是建立員工和角色,角色和選單之間的關聯關係,都是多對多的,

這個分配的角色就是角色頁面建立的,

這個分配許可權就是選單頁面建立的,

另外使用者可以繫結角色,

"""

###############    許可權初始化     ################

"""

許可權初始化

1,在登陸的時候,把選單和許可權拿出來,然後放入session裡面去,

2,這一步涉及到了django session的操作,

原理就是客戶端儲存cookie 格式是 sessionid :sessionkey

sessionkey是自動生成的

sessionkkey會保持在伺服器端,然後對應的有sessiondata,

這種資料在服務端,會比較安全,

"""

###############    許可權元件     ################

"""

許可權校驗

1,使用中介軟體來校驗許可權,這樣每乙個進來的url都會經過中介軟體

2,邏輯就是獲取當前訪問的url,然後取出初始化中儲存到session中的url,看看是否匹配到,匹配到就是有許可權的,

3,settings.valid_url_list,

白名單中的url無需許可權驗證即可訪問

4,settings.no_permission_list

需要登入,但無需許可權校驗,

"""

###############    許可權元件     ################

"""

許可權初始化

在登陸的時候做許可權初始化,這個許可權初始化做了什麼?

需要傳遞兩個引數,user和request,user是當前使用者,request是請求相關的所有資訊

user是乙個物件,user = models.userinfo.objects.filter(name=user, password=pwd).first()

做了兩個事情:

1,根據這個使用者獲取到他所有的許可權,並且放入session,settings.permission_session_key

2,把選單和許可權,放入session,settings.menu_session_key

"""

###############    許可權元件     ################

crm專案 stark元件分析

stark元件 這個stark元件是非常神奇的 1,獨立的乙個元件 2,沒有model 3,沒有views stark元件 stark元件站點類 這個是乙個重點類,應該是研究這個元件的起點 做了幾件事 1,模仿admin,利用了單例模式,2,模仿admin,可以對每乙個表進行註冊 這一步引數就是模型...

CRM專案之stark元件 2

那麼從今天開始呢,我們就要開始設計屬於我們自己的admin元件,起個名字就叫stark吧 當然你願意叫什麼都可以 仿照admin元件實現流程,stark元件要實現四件事情 在settings配置檔案中,確保 django.contrib.admin django.contrib.auth djang...

自定義元件之crm的許可權

我們的元件已經寫完了,但是當我們的其他專案要用到這個元件的時候,就需要把這個元件整個拿過去,所以我們應該把templates和stark放在一起。直接將templates拖到stark元件下。這樣做也是可以的,不會報錯,是因為settings中的templates的配置。然後我們來了解一下什麼是許可...