摘要:為了在企業標準信息化管理系統中實現辦公逐級審核流程,不同工作人員對模塊持有不同的操作權限,同時可以靈活改變操作權限,將各模塊根據編號進行2n操作,“與運算”、“或運費”以及“異或運算”的方法,靈活進行權限的增刪修改操作。運行數據庫分析理論,通過分析用戶、角色、權限、模塊之間的關系,設計出合理的數據庫。通過運用以上方法,并結合實際,編程實現角色權限的訪問控制。分析了權限的實現原理,從系統開發角度闡述了從權限設計到權限實現的全過程,以靈活控制角色權限。
關鍵詞:權限;角色;信息管理系統
DOIDOI:10.11907/rjdk.172435
中圖分類號:TP391
文獻標識碼:A文章編號文章編號:16727800(2018)003019103
英文摘要Abstract:For the enterprise standard information management system, the office level audit process is implemented,Perform operations on the same or different modules by different staff members,Make it have different operation authority, at the same time can change the operation authority flexibly.Perform 2n operations on each module based on the number,Through the operation method and characteristics of “AND” , “OR”,“XOR” operation,flexible permissions additions and deletions modify the operation.Based on database analysis theory,by analyzing the relationship among users, roles, permissions and modules, a reasonable database is designed.Through the use of the above methods, combined with the actual, programming access control of role permissions.The realization principle of authority is analyzed,From the point of view of system development, this paper introduces the total process from permission design to privilege realization,flexible implementation of the role of permissions control.
英文關鍵詞Key Words:authority; role; management information system
0引言
在企業標準化管理工作中,各級質量技術監督部門擔負著非常重要的角色。技術監督機構有很多職能部門,不同的職能部門完成不同的工作,這些工作有:標準制定、標準備案、新企業標準申請、定時對標準實施狀況進行檢查、標準執行監督,同時還需引進一些同行或其它國家的先進標準等。這些工作在申報過程中需要不同級別的人員進行審核,不同人員負責的工作也會不同,所以需要對用戶的角色、使用權限區別對待[1]。
為了實現對企業標準的靈活管理,本文詳細梳理了企業標準工作,對系統的角色權限進行了詳細設計。設計企業標準信息化管理系統涉及的工作非常多,共分為8個模塊,分別是:企業標準制定/修訂管理、企業標準管理、企業標準查詢與下載、企業信息管理、質量監督部門管理、用戶管理、角色權限管理、系統管理。這8個模塊中包含新企業標準申請、企業標準修訂、企業信息登記與查詢、企業標準查詢與下載、企業標準上傳、部門管理、用戶添加、角色權限添加修改等功能[2]。
系統涉及的用戶也很多,有企業用戶,有質量監督局的辦公人員,企業用戶需要方便查看業務辦理進程,有哪些資料要完善等等,而監督局的辦公人員則根據辦理的業務不同,需要分配不同的權限,在權限中形成一個完整的辦公流程,進行逐級審核。所以在該系統中,權限的設計尤為重要。
1權限設計實現原理
系統用戶分為企業用戶和政府辦公人員兩大類。企業用戶可以進行企業標準的申請辦理,以及查看申請進度等,政府辦公人員則可進行更多操作。需根據每個人員的分工不同,得到不同的操作權限,所以需要設計不同的角色以及不同的權限,使不同用戶操作的模塊或操作的功能不同。同時還需對系統模塊、操作權限進行增減。因為模塊在不斷變動,若在用戶權限中設置對模塊的訪問權,則用戶權限也在不斷變動,并通過不斷增加字段對模塊的訪問標記進行設置。數據庫中不斷變化的字段是程序設計員非常頭疼的問題,會導致工作量加大。為避免對數據庫表中的字段進行增減,也為了避免數據庫冗余,能夠靈活添加刪除系統中的模塊,在對模塊進行權限操作時,用以下方法快速實現用戶的模塊操作權限。
根據與運算、或運算的特點可知:
(2 | 4 | 8 | 16)=30
30 & 2 =2
30 & 4=4
30 & 8 =8
30 &16 =16
根據以上原理,對每個模塊的序號進行2n(n>=1)操作,并將結果放至模塊的字段中。若該模塊被選中為用戶操作權限范圍,則進行int sum=0, sum=sum | 2n的操作,并將結果放入用戶權限字段中。在系統讀取用戶權限時,將sum與每個模塊的2n進行邏輯與操作,若2n是sum結果的一個相加項,則與sum進行邏輯與操作后,結果仍為2n,若不為sum結果的相加項,則所得結果為0。從這個過程中, 2n為用戶的權限操作模塊,這樣就解決了在用戶權限中對某個模塊的訪問權限字段設定問題,數據庫的設計也更簡化。
遵照此原理,進行權限的增加、刪除、更新等操作,根據操作序號給不同的操作賦值(2n),如表1所示。
2權限數據庫設計
2.1概念結構設計
不同用戶、不同角色需要操作不同的模塊或不同的功能(如增加、查看、刪除等),所以在設計數據庫時,要重點分析用戶、權限、角色、模塊之間的關系。本系統對用戶的授權訪問可劃分為以下幾類:
系統用戶(User):任何有權限登錄系統的使用人員,對該類用戶再具體劃分;
角色(Role):企業用戶或質量監督局工作人員。不同角色有不同的使用權限;
具體操作對象、操作資源(Operator):可以是某個功能模塊,也可以是某個具體的添加、刪除、修改等操作;
群組(Group):可以繼承父類的對應權限等。
對以上4大類進行分析,一個角色可以操作多個模塊,一個模塊也可以被多個角色所操作。因此,這4大類都具有多對多的關系,關系模型如圖1所示。
2.2邏輯結構設計
不同用戶、不同角色可以使用的權限不同,需要對權限實現靈活的變動。大部分辦公系統存在著對用戶、角色、權限的不同需求,本系統重點分析了科室(用戶所在部門)、用戶、角色、角色權限以及功能模塊等幾個主要實體,并對這幾個實體進一步分析,得到8個數據表, 圖2給出了這8個表之間的關系,其中科室表(部門)對應模型圖1中的Group,功能模塊表以及功能應用表對應模型圖1中的Resource。
3角色權限實現
用戶注冊的角色不同,權限也不同,每個角色的權限中都有對應的Value值,這個Value值就決定了該用戶的使用權限。Value值對應系統中不同的管理頁面,只有0或1兩種。如果Value值對應的是0,代表該用戶無操作這個功能的權限,如果是1,代表該用戶可以操作這個功能。同時功能應用表中,對最基本的列表、新增、修改、刪除4個操作進行了靈活設置。當用戶登錄系統時,系統檢測該用戶的角色權限,并判斷此頁面的Visible是True還是False。若為False,則不顯示此頁面。實現權限角色管理的類如下:
public partial class RoleManager : System.Web.UI.Page
{
intRoleID = (int)Common.sink("RoleID", MethodType.Get, 255, 0, DataType.Int);
string CMD = (string)Common.sink("CMD", MethodType.Get, 50, 0, DataType.Str);
string CMD_Txt = "查看";
string App_Txt = "角色";
stringAll_Title_Txt = "";
protected void Page_Load(object sender, EventArgs e)
{
FrameWorkPermission.CheckPagePermission(CMD);
BindButton();
if (!Page.IsPostBack)
{
OnStart();
}
}
private void OnStart()
{
if (CMD != "Look")
{
TabOptionItem2.Visible = false;
TabOptionItem3.Visible = false;
}
else {
TabOptionItem3.Visible = false;
intRecordcount=0;
QueryParamqp = new QueryParam();
qp.Where = string.Format("Where A_RoleID = {0}",RoleID);
qp.OrderType = 0;
ArrayListlst = BusinessFacade.sys_RoleApplicationList(qp, out Recordcount);
Repeater1.DataSource = lst;
QueryParam qp1 = new QueryParam();
qp1.OrderType = 0;
ArrayList lst1 = BusinessFacade.sys_ApplicationsList(qp1, out Recordcount);
NewAppID.DataSource = lst1;
NewAppID.DataTextField = "A_AppName";
NewAppID.DataValueField = "ApplicationID";
NewAppID.DataBind();
foreach (sys_RoleApplicationTablevar in lst)
{
ListItem ditem1 = this.NewAppID.Items.FindByValue(var.A_ApplicationID.ToString());
if (ditem1 != null)
NewAppID.Items.Remove(ditem1);
}
ListItem item3 = new ListItem();
item3.Text = "請選擇應用";
item3.Value = "";
NewAppID.Items.Insert(0, item3);
}
InputData();
Button1.Attributes.Add("Onclick", "javascript:returncheckForm(aspnetForm);");
Button2.Attributes.Add("Onclick", "javascript:returncheckForm(aspnetForm);");
}}
具體的權限實現如圖3所示。
4結語
本系統通過B/S架構實現。在設計用戶角色權限時,巧妙運用二進制中的“與運算”、“或運算”、“異或運算”方法,在權限的操作中加入這些運算,靈活實現權限應用的增減操作。這種方式可以使用到其它系統中,重復使用相關代碼,為其它系統進行權限設置提供參考。
參考文獻參考文獻:
[1]涂小琴.面向珠寶檢測領域軟件體系結構的研究與設計[D].昆明:昆明理工大學,2012.
[2]劉艷華,陳麟珠.標準化信息管理系統的設計與研究[J].成功,2016(9):223224.
[3]王哲.加強石油科研單位標準化工作的探討[J].石油工業技術監督,2004(1):3940.
[4]張世宏.基于JBPM工作流的電力固定資產管理系統的設計與實現[D].成都:電子科技大學,2007.
[5]朱琳.四川建筑職業技術學院科研管理系統的設計與實現[D].成都:電子科技大學,2012.
[6]丁曉娣.基于.net的民辦高校教務管理系統分析設計與實現[D].濟南:山東大學,2013.
[7]王海楠.貴州水書數字化展示系統設計與實現[D].成都:電子科技大學,2014.
[8]劉柱.中山市公安案件管理信息系統設計與實現[D].成都:電子科技大學,2013.
[9]郭宇.企業信息管理系統[J].科技資訊,2007(18):229230.
[10]張洪俊.云南省招生計劃通用管理系統設計[D].天津:天津大學,2015.
責任編輯(責任編輯:杜能鋼)