我們習慣了在頁面上有幾個按鈕,控制這幾個按鈕的權限,都做得都很熟練,例如有 btnAdd 添加按鈕,btnEdit 編輯按鈕,btnDelete 刪除按鈕,此
頁面是學生基本信息管理頁面 frmStudentManager。
那我們可以設置如下權限對應關系:
"AddStudent" 權限對應 -> "frmStudentManager.btnAdd" 按鈕的可用屬性
"EditStudent" 權限對應 -> "frmStudentManager.btnEdit" 按鈕的可用屬性
"DeleteStudent" 權限對應 -> "frmStudentManager.btnDelete" 按鈕的可用屬性
這個大家都很好理解了。
若學生這個表裡有 RealName姓名、Code編號、Age年齡、Sex性別等字段,用戶能訪問那些列也需要權限控制,大家就很容易糊塗了,其實也是很簡單的道理,只是我們沒徹底想同問題的本質而已,其實我們可以設置如下權限對應關系:
"VIEwStudentRealName" 權限對應 -> 列表中 "RealName姓名 字段是否可見"
"VIEwStudentCode" 權限對應 -> 列表中 "Code編號 字段是否可見"
"VIEwStudentAge" 權限對應 -> 列表中 "Age年齡 字段是否可見"
"VIEwStudentSex" 權限對應 -> 列表中 "Sex性別 字段是否可見"
只不過是多了幾個權限,有些權限是對應按鈕的可用屬性、有些對應列的可見屬性而已。單元格的權限控制,也是以上同樣的原理,可以舉一反三,只是有相應的唯一權限對應每個單元格就可以了。
其實,難是不難,就差捅破那層紙而已,基本原理是一樣的,只是換了個表現方式而已。在過去的幾年裡經常遇到,這樣的提問,今天心情好寫個文章,給大家參考參考吧,日後可能派上用處。
至於說數據庫的所有的表,所有的字段的自動控制等,那就是另一個范疇的問題了,以上只是解決問題的核心思想,你稍微變通一下,就可以搞定了,甚至對數據源的控制,干脆沒權限的數據連讀都不讀出來,那也是可以按以上的思想解決的,那就要看你自己實現了。
將權限管理、工作流管理做到我能力的極致,一個人只能做好那麼很少的幾件事情