1. 程式人生 > >3.運維平臺之賬戶系統

3.運維平臺之賬戶系統

用戶信息 滿足 分享圖片 相同 .com 鏈接 china style 進行

歷程:

0. 賬戶系統(accounts)分為用戶認證和權限分配兩部分.

1. 剛開始運維平臺業務比較單一,只提供給運維組人員使用即可,根本沒有用戶賬號的概念.

2. django系統本身有用戶、用戶組、權限,需要進行一些擴展開發,以滿足需求.

在16年獨立出用戶認證註冊模塊,形成accounts項目,簡單API認證.

3. 在17年時,前端設計獲得很大突破,基於Django實現RBAC權限管理.


需求:

1.需要用戶認證和角色權限管理,實現資源控制訪問.

2.基於用戶-角色-權限數據鏈,在多模塊應用下,維護使用必須便捷實用.

3.權限的粒度控制,不僅僅到達URL,關聯資源且基於角色的權限控制.

所有開發通過接口/url/進行發布, 開發A只允許處理項目資源A, 開發B只允許處理項目資源B.

4.由於權限控制不嚴謹,對系統資源的重啟、刪除風險操作,影響業務展開.


accounts模塊關系圖

技術分享圖片技術分享圖片


大概內容

0.用戶認證:

0.1 用戶賬號信息

0.2 使用部門

0.3 用戶組

1.權限設置:

1.1 權限定義和粒度控制

1.2 用戶-角色-權限數據鏈關聯

2.權限使用:

2.1 用戶權限提取

2.2 用戶權限實際使用.


顯示內容

0.1 用戶賬號信息

提供基本用戶信息,方便本人和其它同事查找,被運維平臺其它應用調用.

每個用戶提供一個獨立token數據串,用於個人API接口數據推送.

0.2 使用部門

公司組織, 資源歸類定位, 有些公司居然沒有單位通訊錄,找起來好麻煩呀.

0.3 用戶組

之前工單和監控報警推送到使用部門,後期獨立成用戶組.


1.1 權限定義和粒度控制

每條權限條目 = URL標識(必需) + 請求方法(可選) + 參數字段(可選) + 參數字典(可選)

粒度控制怎麽做,我也不懂.

#工單任務區, 並不使用url路徑,而是使用url name,因為路徑可變.

#所以我們使用資源封裝權限標識, 而不是資源封裝URL.

#數據來源 http://developer.51cto.com/art/201704/537240.htm

url(r'^task/add/(?P<id>\d+)/$', 'taskAdd', name='taskadd'),

url(r'^task/delete/(?P<id>\d+)/$', 'taskDelete', name='taskdelete'),

url(r'^task/edit/(?P<id>\d+)/$', 'taskEdit', name='taskedit'),

url(r'^task/list/(?P<key>\w*/)$', 'taskList', name='tasklist'),


1.2 用戶-角色-權限數據鏈關聯

用戶通訊錄只處理用戶認證功能即可,並不一一權限關聯;

角色處理權限管理功能, 承上多對多用戶對象, 啟下多對多關聯權限資源,

只需要賦予相應權限用戶對應角色即可.

權限資源控制粒度,獨立出配置接口.


2.1 用戶權限提取

可以通過傳遞權限標識,再去查詢此用戶是否有權限通過. 產生數據庫操作.

也可以在用戶登錄時全量獲取對應應用權限,全量寫入用戶session, 傳遞標識直接在session查詢即可.

數據鏈接: http://blog.csdn.net/Ayhan_huang/article/details/78094570?locationNum=9&fps=1


2.2 用戶權限實際使用

在裝飾器標示在視圖處理方法上時傳入權限標識參數(如:@auth("user:add")),在裝飾器中也是從Session中獲取用戶,

叠代用戶的所有角色綁定的資源中的權限標識,如果與傳入裝飾器中的權限標識相同則放行,否則跳轉到無權限的頁面.

數據鏈接: https://my.oschina.net/harmel/blog/755544


數據鏈接:

<基於Django實現RBAC權限管理>http://blog.csdn.net/Ayhan_huang/article/details/78094570?locationNum=9&fps=1

<我對Django權限控制的理解>https://my.oschina.net/harmel/blog/755544

<Django之路 如何開發通用且萬能的的權限框架組件>http://developer.51cto.com/art/201704/537240.htm

3.運維平臺之賬戶系統