程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 淺談如何有效建立權限管理體系

淺談如何有效建立權限管理體系

編輯:SyBase綜合文章
 本文擬結合PowerBuilder語言,簡述如何在傳統C/S應用系統當中有效建立權限管理體系。
何謂權限管理體系?就是如何控制操作使用者對軟件功能和系統數據的訪問權限的各個方面。傳統的C/S應用系統,多是“前台應用程序+後台數據庫表”兩部分,這樣就決定了我們考慮權限管理體系就必然要考慮兩方面的內容:
1、用戶在前台的功能權限:即該用戶能夠使用哪些菜單或窗口功能,例如:張三只能使用數據錄入功能,不能使用管理審批功能;
2、用戶在後台的功能權限:即該用戶能夠對庫表具有哪些讀、取訪問權限,例如:張三對於x_table表只有讀權限,沒有寫權限;
是否上述兩方面權限管理就足夠了呢?答案是否定的,因為從應用角度來考慮,還需要對用戶的數據訪問權限進行控制,例如:張三屬於A分局,李四屬於B分局,張三、李四各錄入一條數據,那麼在查詢時顯然張三只能查詢到其自己錄入的數據記錄,而不允許其查詢到李四錄入的數據記錄,或者只能查詢而不允許修改,因此這就引出了第三方面的權限管理內容:
3、用戶在應用的數據訪問權限:即該用戶能夠對哪些數據具有哪些訪問權限;
下面我們逐一來了解如何實現上述三個方面的權限管理:
1、前台功能權限:
談到前台功能權限,我們要建立下面幾個概念:
崗位:是指用戶具體負責的工作分類,如:數據錄入崗、文書審批崗、系統維護崗等;
功能:是指用戶能夠使用的軟件功能,可以通過菜單或窗口來控制,但由於一個系統當中窗口通常數據量龐大,控制用戶使用哪些窗口不太實際,因此我們通常菜單控制即可;
工號:是指具體用戶登錄系統所用的用戶ID;
上述三個概念的相互關系如下:
一個崗位可以對應多個功能菜單;
一個功能菜單同樣可以對應多個崗位;
一個工號只能屬於一個崗位;
進而我們可以設計以下用戶登錄流程:
(1)用戶ID登錄系統後讀取對應用戶表查看其所在崗位;
(2)查找該崗位對應可以使用哪些菜單;
(3)將用戶能夠使用的菜單和系統實際菜單逐一比較,屏蔽不允許其使用的菜單;
這裡面由於涉及到菜單的遍歷,需要使用到一些PB的使用技巧,詳見另外一篇文章《淺談如何利用PB實現動態添加菜單》,此處不再贅述。
這樣通過上述三者關系,建立起一個用戶工號到底能夠使用哪些菜單,不能使用哪些菜單。為何要如此復雜,為何不直接定義每個工號能夠使用哪些菜單呢?那樣的話,顯然系統冗余太大,造成資源浪費,不符合規范化要求。
2、後台庫表權限:
後台庫表權限主要是根據前台工號在後台數據庫建立相應的帳號(LOGIN)、用戶(USER),並根據一定的規則產生對應密碼,並賦予其不同的角色(ROLE)、不同庫表的不同讀、寫權限,由於這部分與所采用的後台具體數據庫密切相關,因此本文不再詳述。
3、應用數據權限:
應用數據權限的實現,主要通過各類數據表當中必須引入數據記錄的錄入或產生單位代碼和操作員工號ID,當用戶訪問相應記錄時,首先比較當前用戶ID及其所在單位,是否與數據記錄的產生操作員ID及其單位代碼一致,這個問題說起來簡單,但實際用PB語言實現起來需要講究一定技巧,要充分借助“繼承”這一特性,盡量高效、通用。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved