在風口浪尖後,如何有效控制權限?

  隨着IT技術的不斷髮展,業務場景不斷複雜,用戶在業務操作過程對操作權限的要求越來越高,從原來的粗粒度權限到現在的細粒度權限,追求卓越的用戶體驗,權限主要包含兩個方面,一方面是功能權限,另一方面是數據權限,下面將進行簡單介紹兩種權限。

1.   權限體系簡介

  功能權限是指某個系統角色,是否有權查看或操作某個菜單或按鈕,該種權限的方案目前已經相對比較通用且成熟,例如:A角色只擁有監控模塊功能,B角色擁有配置管理模塊及監控模塊功能。

  數據權限是指對於同一功能菜單下的查詢記錄,A用戶進行可以對第一條和第三條記錄進行維護,B用戶進去只能對第二條記錄數據進行維護,對於第一條和第三條只能進行查看,這一類權限的方案現在雖然已經有一些解決方案,但是沒有通用性,只能私有化自己的業務模型(也就是更多的是以硬編碼的方式進行控制)。

2.   權限體系分析

  對於功能權限,一般而言,每個系統都有一個系統管理模塊,系統管理模塊一般都會有用戶、角色、菜單的功能,其中權限的控制一般也是用於與角色關聯,角色與菜單進行管理,這種及時無業務操作數據,不同角色的人員登錄上去能看到的菜單及頁面,就是功能權限控制的範圍。這類常見比較多,一般會以人員的級別或職位進行定義,例如:一般IT公司內部辦公系統,會分普通員工角色、項目經理角色、項目總監角色等,對於一般員工只具有普通員工角色,而項目經理具有普通員工角色及項目經理角色,項目總監具有普通員工、項目經理及項目總監角色。而普通員工角色只能查看自己的相關數據,而項目經理可以查看自己及自己管轄範圍的部分業務數據,項目總監類似。

  對於數據權限,一般是通過數據權限的規則,然後根據規則執行不同的權限控制體系,例如:某方案報告查詢結果頁面,具有報告名稱、報告類型、報告上傳人、報告歸屬部門、報告上傳時間、報告狀態等字段,如果需要做數據權限控制,則需要梳理出報告類型、報告上傳人、歸屬人、狀態等對數據權限是如何制約的,如:只有狀態爲未提交的且是本人上傳的,纔可以刪除,再比如只有報告歸屬部門是本部門的才能夠下載,這類數據權限的控制,相比功能權限複雜的多,實現難度也較大,且通用性較差。

3.   權限實現建議

  針對兩種不同的權限控制,功能權限是基礎權限,而數據權限是高級權限,由於功能權限目前已經有了通用的解決方案,本文不在進行闡述,首先我們大致瞭解一下數據權限的一些特徵:

  • 數據權限一般是組合類型的細粒度業務需求;
  • 數據權限一般是某幾個字段或臨時角色相關;
  • 數據權限一般是權限體系完善的企業代名詞;

針對數據權限的一些特徵,如果需要建立體系化的數據權限,一般建議從以下幾個方面考慮實現:

  • 規劃建立統一的數據權限中心,並存儲數據權限規則;
  • 前端應用的數據權限,由後端按照規則進行計算並反饋,前端只做結果的渲染;
  • 規則的定義,建議先進行抽象,然後進行實例化;
  • 規則的定義需單一,組合規則建立完善的規則引擎鏈;
  • 數據權限的數據,建議先標準化後臺應用的元數據模型,禁止出現歧義或混亂的元數據定義;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章