![基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/d0495954-36c8-4529-86a1-236c4599de95/d0495954-36c8-4529-86a1-236c4599de951.gif)
![基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/d0495954-36c8-4529-86a1-236c4599de95/d0495954-36c8-4529-86a1-236c4599de952.gif)
![基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/d0495954-36c8-4529-86a1-236c4599de95/d0495954-36c8-4529-86a1-236c4599de953.gif)
![基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/d0495954-36c8-4529-86a1-236c4599de95/d0495954-36c8-4529-86a1-236c4599de954.gif)
![基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/d0495954-36c8-4529-86a1-236c4599de95/d0495954-36c8-4529-86a1-236c4599de955.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)在blog中看到有人寫到web權(quán)限管理的一些文章,這里把我曾經(jīng)做過的一些權(quán)限管理作一下總結(jié),歡迎拍磚。 這里討論的權(quán)限只涉及到信息管理系統(tǒng)里面的權(quán)限管理,超出此范圍的權(quán)限管理暫不涉及。1、權(quán)限的應(yīng)用對象上面我們已經(jīng)定義了權(quán)限的范圍,就是信息系統(tǒng)管理里面的表單操作,那么權(quán)限的應(yīng)用對象就是表單,更進(jìn)一步說,就是表達(dá)表單內(nèi)容的web管理頁面。2、權(quán)限的分類一個(gè)頁面的權(quán)限范圍分為以下幾種,也可以叫做基本權(quán)限單位。l 操作權(quán)限:操作權(quán)限是一種頁面級(jí)別的權(quán)限,
2、也可以叫做頁面權(quán)限。包括以下幾種n 新增n 修改n 刪除n 查詢 在此基礎(chǔ)上還可以進(jìn)行更加詳細(xì)的一些分類,比如查看他人記錄的權(quán)限,修改他人記錄的權(quán)限等。這部分也可以使用下面的記錄權(quán)限來實(shí)現(xiàn)。l &
3、#160; 按鈕權(quán)限:針對頁面上按鈕的權(quán)限管理,包括n 是否可見n 是否可用 有時(shí)候,我們可以把按鈕權(quán)限看作為字段權(quán)限。l 字段權(quán)限:字段在頁面的不同狀態(tài)(新增,修改,查詢)下面的各種狀態(tài)管理。包括n
4、60; 是否可見n 是否可修改l 記錄權(quán)限:記錄權(quán)限是指用戶對某些記錄的查看和修改權(quán)限。比如客戶關(guān)系管理系統(tǒng)中,不同界別的系統(tǒng)用戶可以看到不同的記錄,例如上司可以看他所有下級(jí)員工的客戶列表等。3、權(quán)限的實(shí)現(xiàn)模型上面的權(quán)限分類大概對涉及到頁面元素的權(quán)限進(jìn)行了一個(gè)比較全面的概括。另外一個(gè)問題就是權(quán)限管理的實(shí)現(xiàn)模型。在大部分的系統(tǒng)中都是用的基于角色控制
5、模型的權(quán)限管理。在這樣的系統(tǒng)中,創(chuàng)建一系列的角色,然后把基本權(quán)限單位分配給這些角色,再把角色分配給用戶,這樣用戶登錄系統(tǒng)后,就根據(jù)當(dāng)前用戶所擁有的角色可以定位出權(quán)限。 在針對信息管理系統(tǒng)中,權(quán)限模型有自己的特色,除了角色的概念以外,還有表單權(quán)限的概面。第一節(jié)里面所討論的各種權(quán)限基本單位不但可以應(yīng)用到角色上,也可以應(yīng)用到表單上。對于應(yīng)用到表單上的基本權(quán)限單位,我們叫做表單的固有權(quán)限屬性(靜態(tài)權(quán)限)。對于應(yīng)用到角色上的基本權(quán)限單位,我們叫做角色權(quán)限屬性(動(dòng)態(tài)權(quán)限)。用下圖來表示: 根據(jù)上面的模型,一個(gè)用戶登錄到系統(tǒng)中后,得到某一個(gè)表單的權(quán)限就和這個(gè)表單的固有權(quán)限屬性
6、和這樣用戶所擁有的角色有關(guān)。4、權(quán)限的計(jì)算方式用戶登錄后對一個(gè)表單進(jìn)行操作,靜態(tài)權(quán)限只有一個(gè),即表單本身的權(quán)限屬性,動(dòng)態(tài)權(quán)限可以有多個(gè),即用戶可以同時(shí)屬于多個(gè)角色,這些角色在這個(gè)表單上都有不同的動(dòng)態(tài)權(quán)限。用戶對這個(gè)表單所能進(jìn)行的操作是由這個(gè)動(dòng)態(tài)權(quán)限和靜態(tài)權(quán)限的綜合作用決定的。進(jìn)行權(quán)限判斷分為兩個(gè)步驟:1、 動(dòng)態(tài)權(quán)限組合:根據(jù)用戶所屬的角色的權(quán)限分析得到最終的動(dòng)態(tài)權(quán)限集合。2、 動(dòng)態(tài)權(quán)限和靜態(tài)權(quán)限的組合:利用得到的動(dòng)態(tài)權(quán)限集合再和靜態(tài)權(quán)限進(jìn)行綜合分析得到用戶的最終權(quán)限。 在動(dòng)態(tài)權(quán)限和動(dòng)態(tài)權(quán)限進(jìn)行組合判斷,以及動(dòng)態(tài)權(quán)限和靜態(tài)權(quán)限進(jìn)行組合判斷的時(shí)候,根據(jù)權(quán)限類型的不同,
7、使用不同的組合判斷方法對于 操作權(quán)限,分為兩種組合方法:l 或操作:或操作認(rèn)為,兩個(gè)層次的權(quán)限單位進(jìn)行比較,只要其中一個(gè)權(quán)限單位認(rèn)為“可以做”,那么組合權(quán)限結(jié)果就是“可以做”。例如對于“增加”這個(gè)操作權(quán)限,如果角色A設(shè)置為可以增加,角色B設(shè)置為不可以增加,那么綜合的結(jié)果就是 可以進(jìn)行 “增加”l 與操作:與操作認(rèn)為,兩個(gè)層次的權(quán)限單位進(jìn)行比較,只要其中一個(gè)權(quán)限單位認(rèn)為“不可以做”,那么組合權(quán)限結(jié)果就是“不
8、可以做”。例如: 對于“增加”這個(gè)操作權(quán)限,如果角色A設(shè)置為可以增加,角色B設(shè)置為不可以增加,那么綜合的結(jié)果就是 不可以進(jìn)行 “增加” 對于字段權(quán)限 和 記錄權(quán)限 只有一種組合方法:l 權(quán)限并集:也就是說組合的結(jié)果是這兩種層級(jí)的權(quán)限單位控制范圍的一個(gè)相交的結(jié)果。例如:對于角色A,他在表單F上的的只讀字段為(a,b,c,d),角色B在表單F上的只讀字段為(c,d,e,f),那么角色A和角色表的相交結(jié)果就是只讀字段集合(a,b,c,d,e,f)。 下面兩張表顯示了不同的權(quán)限層次,不同
9、的權(quán)限類型在進(jìn)行權(quán)限比較時(shí)選擇不同的比較方法:不同的角色之間進(jìn)行權(quán)限比較: 角色B-操作權(quán)限角色B-字段權(quán)限角色B-記錄權(quán)限角色A-操作權(quán)限或操作 角色A-字段權(quán)限 并集 角色A-記錄權(quán)限 并集 當(dāng)有多個(gè)角色權(quán)限是,列入有角色A,B,C,D,先對A,B做計(jì)算,然后把計(jì)算結(jié)果和C進(jìn)行計(jì)算,依次類推。 動(dòng)態(tài)權(quán)限和靜態(tài)權(quán)限進(jìn)行權(quán)限比較: 動(dòng)態(tài)權(quán)限-操作權(quán)限動(dòng)態(tài)權(quán)限-字段權(quán)限動(dòng)態(tài)權(quán)限-記錄權(quán)限靜態(tài)權(quán)限-操作權(quán)限與操作 靜態(tài)權(quán)限-字段權(quán)限 并集 靜態(tài)權(quán)限-記錄
10、權(quán)限 交集看過基于web信息管理系統(tǒng)的權(quán)限設(shè)計(jì)分析和總結(jié)(理論)的一些網(wǎng)友問道,能不能給出這個(gè)權(quán)限模型的實(shí)現(xiàn),其實(shí)模型是一個(gè)解決給定問題的理論指導(dǎo),具體的實(shí)現(xiàn)可以有多種方式,可能根據(jù)您的項(xiàng)目的實(shí)際情況有所不同,這里給出一個(gè)是基于sql server數(shù)據(jù)庫的實(shí)現(xiàn)。這里提到的只是一些基本的權(quán)限信息,您當(dāng)然可以擴(kuò)展更多的權(quán)限信息。 首先需要定義的是基本權(quán)限單位的數(shù)據(jù)庫模型,用下表來表示:(這個(gè)表不是獨(dú)立存在的,而是合并到表單信息表 和 角色權(quán)限表中)權(quán)限類型字段名稱類型意義操作權(quán)限AddActionbit新增ModifyActionbit修改DeleteActionb
11、it刪除SearchActionbit查詢字段權(quán)限(字段之間以逗號(hào) , 分割)ReadOnlyColumnsOnAddNvarchar(1000)只讀字段(新增)HiddenColumnsOnAddNvarchar(1000)隱藏字段(新增)ReadOnlyColumnsOnModifyNvarchar(1000)只讀字段(修改)HiddenColumnsOnModifyNvarchar(1000)隱藏字段(修改)HiddenColumnsOnSearchNvarchar(1000)隱藏字段(查詢)紀(jì)錄權(quán)限(一段表示權(quán)限范圍的語句,在本實(shí)現(xiàn)中,就是一個(gè)sql語句的片斷) ReadOn
12、lyRecordsNvarchar(1000)只讀紀(jì)錄HiddenRecordsNvarchar(1000)隱藏紀(jì)錄 接下來是表單信息表,表單信息表有一些基本的表單信息,例如表單名稱等,同時(shí)表單信息表也擁有以上的基本權(quán)限數(shù)據(jù),這些權(quán)限信息構(gòu)成了表單的固有權(quán)限屬性(靜態(tài)權(quán)限),一個(gè)簡單的表單信息表如下所示:表單信息表:Forms 字段名稱類型意義 FormIDNvarchar(100)表單IDFormNameNvarchar(100)表單名稱AddActionbit新增表單的固有權(quán)限屬性(靜態(tài)權(quán)限)ModifyActionbit修改DeleteActio
13、nbit刪除SearchActionbit查詢ReadOnlyColumnsOnAddNvarchar(1000)只讀字段(新增)HiddenColumnsOnAddNvarchar(1000)隱藏字段(新增)ReadOnlyColumnsOnModifyNvarchar(1000)只讀字段(修改)HiddenColumnsOnModifyNvarchar(1000)隱藏字段(修改)HiddenColumnsOnSearchNvarchar(1000)隱藏字段(查詢)ReadOnlyRecordsNvarchar(1000)只讀紀(jì)錄HiddenRecordsNvarchar(1000)隱藏紀(jì)錄
14、 下面就是角色表了,角色表相當(dāng)簡單,只包含一個(gè)角色名稱就可以了:角色表:Roles字段名稱類型意義RoleIDNvarchar(100)角色I(xiàn)DRoleNameNvarchar(100)角色名稱 定義好了角色表,接下來就是角色權(quán)限了,就是角色在每個(gè)表單上的權(quán)限表現(xiàn)形式,當(dāng)前這個(gè)表就需要跟角色以及表單有關(guān)了,具體的結(jié)果如下:角色權(quán)限表: RolePurview字段名稱類型意義 RolePurviewIDNvarchar(100)主鍵FormIDNvarchar(100)表單ID外鍵,關(guān)聯(lián)到表單信息表的FormIDRoleIDNvarchar(
15、100)角色I(xiàn)D外鍵,關(guān)聯(lián)到角色表的RoleIDAddActionbit新增表單的角色權(quán)限屬性(動(dòng)態(tài)權(quán)限)ModifyActionbit修改DeleteActionbit刪除SearchActionbit查詢ReadOnlyColumnsOnAddNvarchar(1000)只讀字段(新增)HiddenColumnsOnAddNvarchar(1000)隱藏字段(新增)ReadOnlyColumnsOnModifyNvarchar(1000)只讀字段(修改)HiddenColumnsOnModifyNvarchar(1000)隱藏字段(修改)HiddenColumnsOnSearchNvarc
16、har(1000)隱藏字段(查詢)ReadOnlyRecordsNvarchar(1000)只讀紀(jì)錄HiddenRecordsNvarchar(1000)隱藏紀(jì)錄 當(dāng)然要完成整個(gè)模型,還需要用戶信息表以及用戶角色表用戶信息表:Users字段名稱類型意義UserIDNvarchar(100)用戶IDUserNameNvarchar(100)用戶名稱 用戶角色表:UserInRoles字段名稱類型意義UserInRoleIDNvarchar(100)主鍵UserIDNvarchar(100)用戶ID外鍵,關(guān)聯(lián)到用戶表的UserIDRoleIDNvarchar(100)角色I(xiàn)D外
17、鍵,關(guān)聯(lián)到角色表的RoleID 到目前為止,我們完成這個(gè)模型所需要的表都出場了,下面的圖表示了他們之間的關(guān)系: 在下節(jié)中將實(shí)現(xiàn)具體的權(quán)限的計(jì)算公式。首先需要一個(gè)存儲(chǔ)過程來實(shí)現(xiàn)計(jì)算用戶在表單上的權(quán)限,這個(gè)存儲(chǔ)過程接受兩個(gè)參數(shù),用戶ID和表單ID,在這個(gè)存儲(chǔ)過程里面使用一條sql語句來計(jì)算用戶在表單上的權(quán)限,如下所示: Code- =-計(jì)算用戶對表單的權(quán)限- =create PROCEDURE dbo.sp_GetUserPurveiewOnMenu userID nvarchar(100) ,-用戶ID formID nvarchar(100) -表單IDASBE
18、GIN SELECT rp.formID, u.userID, -計(jì)算記錄權(quán)限:只讀記錄 dbo.fun_Purview_GetRecordPurview(u.userID,rp.formID,'ReadOnlyRecords') as ReadOnlyRecords, -計(jì)算記錄權(quán)限:隱藏記錄記錄 dbo.fun_Purview_GetRecordPurview(u.userID,rp.formID,'HiddenRecord') as HiddenRecord, -計(jì)算字段權(quán)限:只讀記錄(新增) dbo.fun_Purview_GetColumns(u.us
19、erID,rp.formID,'ReadOnlyColumnsOnAdd') as ReadOnlyColumnsOnAdd, -計(jì)算字段權(quán)限:隱藏記錄(新增) dbo.fun_Purview_GetColumns(u.userID,rp.formID,'HiddenColumnsOnAdd') as HiddenColumnsOnAdd, -計(jì)算字段權(quán)限:只讀記錄(修改) dbo.fun_Purview_GetColumns(u.userID,rp.formID,'ReadOnlyColumnsOnModify') as ReadOnlyCol
20、umnsOnModify, -計(jì)算字段權(quán)限:隱藏記錄(修改) dbo.fun_Purview_GetColumns(u.userID,rp.formID,'HiddenColumnsOnModify') as HiddenColumnsOnModify, -計(jì)算字段權(quán)限:隱藏記錄(查詢) dbo.fun_Purview_GetColumns(u.userID,rp.formID,'HiddenColumnsOnSearch') as HiddenColumnsOnSearch, -計(jì)算操作權(quán)限:新增 (CASE WHEN (SUM(CAST(CASE f.Add
21、Action WHEN 0 THEN 0 ELSE rp.AddAction END) AS int) > 0 THEN cast(1 as bit) ELSE cast(0 as bit) END) as AddAction, -計(jì)算操作權(quán)限:修改 (CASE WHEN ( SUM(CAST(CASE f.ModifyAction WHEN 0 THEN 0 ELSE rp.ModifyAction END) AS int) ) > 0 THEN cast(1 as bit) ELSE cast(0 as bit) END) as ModifyAction, -計(jì)算操作權(quán)限:刪除
22、 (CASE WHEN ( SUM(CAST(CASE f.DeleteAction WHEN 0 THEN 0 ELSE rp.DeleteAction END) AS int) > 0 THEN cast(1 as bit) ELSE cast(0 as bit) END) as DeleteAction, -計(jì)算操作權(quán)限:查詢 (CASE WHEN ( SUM(CAST(CASE f.SearchAction WHEN 0 THEN 0 ELSE rp.SearchAction END) AS int) > 0 THEN cast(1 as bit) ELSE cast(0
23、as bit) END) as SearchAction FROM users u, userinroles ur, RolePurview rp, forms f WHERE u.userID = ur.userID AND ur.roleID = rp.roleID AND rp.formID = f.formID AND u.userID = userid AND f.formID = formID GROUP BY rp.formID,u.userIDEND 在這個(gè)存儲(chǔ)過程里面,有兩個(gè)用戶函數(shù),分別用于計(jì)算字段權(quán)限和記錄權(quán)限。用于計(jì)算字段權(quán)限的函數(shù)是fun_Purview_GetCol
24、umns,這個(gè)函數(shù)接受三個(gè)參數(shù),分別是用戶ID、表單ID和字段權(quán)限類型,具體如下所示: Code- =- 計(jì)算字段權(quán)限- =create FUNCTION dbo.fun_Purview_GetColumns( userID nvarchar(100),-用戶ID formID nvarchar(100),-表單ID columnType varchar(50)-字段權(quán)限類型)RETURNS nvarchar(2000)ASBEGIN declare columsID nvarchar(4000),tem nvarchar(1000),c cursor set columsID='
25、39; set tem = '' if columnType = 'ReadOnlyColumnsOnAdd' - 計(jì)算只讀字段集合(新增)。對于其他字段集合類似 begin set c = cursor for select ReadOnlyColumnsOnAdd from forms where formID=formID union select ReadOnlyColumnsOnAdd from RolePurview where roleID in( select roleID from UserInRoles where userID=userid
26、 ) open c fetch next from c into tem while fetch_status =0 begin if tem is not null begin set columsID = columsID +','+ tem end fetch next from c into tem end close c deallocate c end return columsIDEND 用于計(jì)算記錄權(quán)限的函數(shù)是fun_Purview_GetRecordPurview,這個(gè)函數(shù)接受三個(gè)參數(shù),分別是用戶ID、表單ID和記錄權(quán)限類型,具體如下所示: Code- =-計(jì)
27、算記錄權(quán)限- =alter FUNCTION dbo.fun_Purview_GetRecordPurview( userid int,-用戶ID formID int ,-表單ID recordPurviewType varchar(100)-記錄權(quán)限類型)RETURNS nvarchar(4000)ASBEGIN declare recordPurviewSql nvarchar(4000),c2 cursor,sql nvarchar(4000), formRecordPurviewExpression nvarchar(4000) set recordPurviewSql = '
28、;' set sql = '' if recordPurviewType ='ReadOnlyRecords'-計(jì)算只讀記錄,對于隱藏記錄類似 begin set c2 = cursor for select ReadOnlyRecords from RolePurivew where roleID in( select roleID from UserInRoles where userID=userid ) and formID=formID open c2 fetch next from c2 into sql while fetch_status
29、 =0 begin if sql is not null and sql<> '' begin -對于角色之間的記錄權(quán)限,使用并集 set recordPurviewSql = recordPurviewSql +'('+sql+')' + ' or ' end fetch next from c2 into sql end close c2 deallocate c2 if len(recordPurviewSql) > 3 begin set recordPurviewSql = substring(recordPurviewSql,1,len(recordPurviewSql)-3) end select formRecordPurviewExpression
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識(shí)產(chǎn)權(quán)貫標(biāo)與品牌價(jià)值的共同提升
- 電子設(shè)備銷售中的綠色環(huán)保宣傳策略
- 2025年中國分布式光伏電站行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略研究報(bào)告
- 知識(shí)型員工的激勵(lì)與管理模式優(yōu)化探討
- 十堰市鄖陽區(qū)2022年七年級(jí)《道德》上冊期中試卷與參考答案
- 現(xiàn)代智能家居與環(huán)保的融合趨勢
- 兔皮項(xiàng)目投資立項(xiàng)報(bào)告
- 購匯申請書怎么填
- 英國首相將辭職申請書
- 2025年中國齒輪油行業(yè)市場專項(xiàng)調(diào)研及投資前景可行性預(yù)測報(bào)告
- 酒店長包房租賃協(xié)議書范本
- 2 找春天 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 2025年江蘇護(hù)理職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年江蘇南京水務(wù)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 【道法】開學(xué)第一課 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊
- 口腔門診分診流程
- 建筑工程施工安全管理課件
- 2025年春新外研版(三起)英語三年級(jí)下冊課件 Unit2第1課時(shí)Startup
- 2025年上半年畢節(jié)市威寧自治縣事業(yè)單位招考考試(443名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 處方點(diǎn)評(píng)知識(shí)培訓(xùn)
- 2025年新合同管理工作計(jì)劃
評(píng)論
0/150
提交評(píng)論