![關(guān)于用戶權(quán)限的數(shù)據(jù)庫設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/4879d1e7-6801-44db-b714-8708610b884a/4879d1e7-6801-44db-b714-8708610b884a1.gif)
![關(guān)于用戶權(quán)限的數(shù)據(jù)庫設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/4879d1e7-6801-44db-b714-8708610b884a/4879d1e7-6801-44db-b714-8708610b884a2.gif)
![關(guān)于用戶權(quán)限的數(shù)據(jù)庫設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/4879d1e7-6801-44db-b714-8708610b884a/4879d1e7-6801-44db-b714-8708610b884a3.gif)
![關(guān)于用戶權(quán)限的數(shù)據(jù)庫設(shè)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/4879d1e7-6801-44db-b714-8708610b884a/4879d1e7-6801-44db-b714-8708610b884a4.gif)
![關(guān)于用戶權(quán)限的數(shù)據(jù)庫設(shè)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/4879d1e7-6801-44db-b714-8708610b884a/4879d1e7-6801-44db-b714-8708610b884a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 設(shè)計(jì)思路 為了設(shè)計(jì)一套具有較強(qiáng)可擴(kuò)展性的用戶認(rèn)證管理,需要建立用戶、角色和權(quán)限等數(shù)據(jù)庫表,并且建立之間的關(guān)系,具體實(shí)現(xiàn)如下。 1.1 用戶 用戶僅僅是純粹的用戶,用來記錄用戶相關(guān)信息,如用戶名、密碼等,權(quán)限是被分離出去了的。用戶(User)要擁有對某種資源的權(quán)限,必須通過角色(Role)去關(guān)聯(lián)。 用戶通常具有以下屬性: 編號,在系統(tǒng)中唯一。 ü
2、160; 名稱,在系統(tǒng)中唯一。 ü 用戶口令。 ü 注釋,描述用戶或角色的信息。 1.2 角色 角色是使用權(quán)限的基本單位,擁有一定數(shù)量的權(quán)限,通過角色賦予用戶權(quán)限,通常具有以下屬性: ü
3、60; 編號,在系統(tǒng)中唯一。 ü 名稱,在系統(tǒng)中唯一。 ü 注釋,描述角色信息 1.3 權(quán)限 權(quán)限指用戶根據(jù)角色獲得對程序某些功能的操作,例如對文件的讀、寫、修改和刪除功能,通常具有以下屬
4、性: ü 編號,在系統(tǒng)中唯一。 ü 名稱,在系統(tǒng)中唯一。 ü 注釋,描述權(quán)限信息 1.4 用戶與角色的關(guān)系 一個(gè)用戶(User)可以隸屬于多個(gè)角色(Role),一個(gè)角色組也可擁有多個(gè)用戶,用戶
5、角色就是用來描述他們之間隸屬關(guān)系的對象。用戶(User)通過角色(Role)關(guān)聯(lián)所擁有對某種資源的權(quán)限,例如 l 用戶(User): UserID UserName UserPwd 1
6、0; 張三 xxxxxx 2 李四
7、; xxxxxx l 角色(Role): RoleID RoleName
8、; RoleNote 01 系統(tǒng)管理員 監(jiān)控系統(tǒng)維護(hù)管理員 02 &
9、#160; 監(jiān)控人員 在線監(jiān)控人員 03
10、 調(diào)度人員 調(diào)度工作人員 04 一般工作人員 工作人員
11、 從該關(guān)系表可以看出,用戶所擁有的特定資源可以通過用戶角色來關(guān)聯(lián)。 1.5 權(quán)限與角色的關(guān)系 一個(gè)角色(Role)可以擁有多個(gè)權(quán)限(Permission),同樣一個(gè)權(quán)限可分配給多個(gè)角色。例如: l 角色(Role): RoleID RoleName
12、60; RoleNote 01 系統(tǒng)管理員 監(jiān)控系統(tǒng)維護(hù)管理員 02
13、 監(jiān)控人員 在線監(jiān)控人員 03 調(diào)度人員
14、160; 調(diào)度工作人員 04 一般工作人員 工作人員 l &
15、#160; 權(quán)限(Permission): PermissionID PermissionName PermissionNote 0001
16、160; 增加監(jiān)控 允許增加監(jiān)控對象 0002 修改監(jiān)控
17、 允許修改監(jiān)控對象 0003 刪除監(jiān)控
18、160; 允許刪除監(jiān)控對象 0004 察看監(jiān)控信息 允許察看監(jiān)控對象
19、l 角色權(quán)限(Role_Permission): RolePermissionID RoleID PermissionID RolePermissionNote 1
20、160; 01 0001 角色“系統(tǒng)管理員”具有權(quán)限“增加監(jiān)控” 2
21、 01 0002 角色“系統(tǒng)管理員”具有權(quán)限“修改監(jiān)控” 3
22、0; 01 0003 角色“系統(tǒng)管理員”具有權(quán)限“刪除監(jiān)控” 4
23、160; 01 0004 角色“系統(tǒng)管理員”具有權(quán)限“察看監(jiān)控” 5
24、 02 0001 角色“監(jiān)控人員”具有權(quán)限“增加監(jiān)控”
25、6 02 0004
26、;角色“監(jiān)控人員”具有權(quán)限“察看監(jiān)控” 由以上例子中的角色權(quán)限關(guān)系可以看出,角色權(quán)限可以建立角色和權(quán)限之間的對應(yīng)關(guān)系。1.6 建立用戶權(quán)限 用戶權(quán)限系統(tǒng)的核心由以下三部分構(gòu)成:創(chuàng)造權(quán)限、分配權(quán)限和使用權(quán)限。 第一步由Creator創(chuàng)造權(quán)限(Permission),Creator在設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)時(shí)會(huì)劃分。利用存儲(chǔ)過程CreatePermissionInfo(PermissionName,PermissionNote)創(chuàng)建權(quán)限信息,指定系統(tǒng)模塊具有哪些權(quán)限。
27、60;第二步由系統(tǒng)管理員(Administrator)創(chuàng)建用戶和角色,并且指定用戶角色(UserRole)和角色權(quán)限(RolePermission)的關(guān)聯(lián)關(guān)系。 1) 具有創(chuàng)建用戶、修改用戶和刪除用戶的功能: Administrator l 存儲(chǔ)過程CreateUserInfo(UserName,UserPwd)創(chuàng)建用戶信息;l
28、160; 存儲(chǔ)過程ModifyUserInfo(UserName,UserPwd)修改用戶信息; l 存儲(chǔ)過程DeleteUserInfo(UserID)刪除用戶信息; 2) 具有創(chuàng)建角色和刪除角色的功能: Administrator l
29、160; 存儲(chǔ)過程CreateRoleInfo(RoleName,RoleNote)創(chuàng)建角色信息;l 存儲(chǔ)過程DeleteRoleInfo(RoleID)刪除角色信息; 3)Administrator具有建立用戶和角色、角色和權(quán)限的關(guān)聯(lián)關(guān)系功能: l 存儲(chǔ)過程GrantUserRole(UserID,RoleID,UserRoleNote)建立用戶和角色的關(guān)聯(lián)關(guān)系; l
30、 存儲(chǔ)過程DeleteUserRole(UserRoleID)刪除用戶和角色的關(guān)聯(lián)關(guān)系; l 存儲(chǔ)過程GrantRolePermission(RoleID,PermissionID,RolePermissionNote)建立角色和權(quán)限的關(guān)聯(lián)關(guān)系; l 存儲(chǔ)過程DeleteR
31、olePermission(RolePermissionID)刪除角色和權(quán)限的關(guān)聯(lián)關(guān)系; 第三步用戶(User)使用Administrator分配給的權(quán)限去使用各個(gè)系統(tǒng)模塊。利用存儲(chǔ)過程GetUserRole(UserID, UserRoleID output),GetRolePermission(RoleID,Role- -PermissinID output)獲得用戶對模塊的使用權(quán)限。1.7 用戶認(rèn)證實(shí)現(xiàn) 當(dāng)用戶通過驗(yàn)證后,由系統(tǒng)自動(dòng)生成一個(gè)128位的TicketID保存到用戶數(shù)據(jù)庫表中,建立存儲(chǔ)過程Login(User
32、ID,UserPwd, TicketID output)進(jìn)行用戶認(rèn)證,認(rèn)證通過得到一個(gè)TicketID,否則TicketID為null。其流程圖如下: 圖1 Login流程圖 得到TicketID后,客戶端在調(diào)用服務(wù)端方法時(shí)傳遞TicketID,通過存儲(chǔ)過程JudgeTicketPermission(TicketID,PermissionID)判斷TicketID對應(yīng)的用戶所具有的權(quán)限,并根據(jù)其權(quán)限進(jìn)行方法調(diào)用。 當(dāng)用戶退出系統(tǒng)時(shí),建立存儲(chǔ)過程Logout(UserID)來退出系統(tǒng)。當(dāng)用戶異常退出系統(tǒng)時(shí),根據(jù)最后的登陸時(shí)間(LastS
33、ignTime)確定用戶的TickeID,建立存儲(chǔ)過程ExceptionLogout(UserID,LastSignTime)處理用戶的異常退出。 圖2 Logout流程圖 WebService可以采用SoapHeader中寫入TicketID來使得TicketID從客戶端傳遞給服務(wù)端。.Net Remoting可以采用CallContext類來實(shí)現(xiàn)TicketID從客戶端傳遞給服務(wù)端。2 數(shù)據(jù)庫設(shè)計(jì) 2.1 數(shù)據(jù)庫表 圖3 數(shù)據(jù)庫關(guān)系圖 2.2 數(shù)據(jù)庫表說明 2.2.1
34、160;用戶表(Static_User) Static_User Static_User字段名 詳細(xì)解釋 類型 備注 UserID 路線編號 varchar(20) PK UserName 用戶名稱 varchar(20) UserPwd 用戶密碼
35、160;varchar(20) LastSignTime 最后登陸時(shí)間 datatime SignState 用戶登陸狀態(tài)標(biāo)記 int TickeID 驗(yàn)證票記錄編號 varchar(128) 2.2.2 角色表(Static_Role)&
36、#160;Static_Role Static_User字段名 詳細(xì)解釋 類型 備注 RoleID 角色編號 varchar(20) PK RoleName 角色名稱 varchar(20) RoleNote 角色信息描述 varchar(20)
37、 2.2.3 用戶角色表(Static_User_Role) Static_User_Role Static_User字段名 詳細(xì)解釋 類型 備注 UserRoleID 用戶角色編號 varchar(20) PK UserID 用戶編號 varchar(
38、20) FK RoleID 角色編號 varchar(20) FK UserRoleNote 用戶角色信息描述 varchar(20) 2.2.4 權(quán)限表(Static_Permission) Static_Permission Static_User字段名 詳細(xì)解釋
39、0; 類型 備注 PermissionID 編號 varchar(20) PK PermissionName 權(quán)限名稱 varchar(20) PermissionNote 全息信息描述 varchar(20) 2.2.5 角色權(quán)限表(Stat
40、ic_Role_Permission) Static_Role_Permission Static_User字段名 詳細(xì)解釋 類型 備注 RolePermissionID 角色權(quán)限編號 varchar(20) PK RoleID 角色編號 varchar(20) FK Permi
41、ssionID 權(quán)限編號 varchar(20) FK RolePermissionNote 角色權(quán)限信息描述 varchar(20) 用“位”來存儲(chǔ)、修改用戶權(quán)限的方法以前我用記錄方式,如A用戶有3個(gè)模塊權(quán)限,則A有三條記錄 看到別人的程序里有這種方法,感覺不錯(cuò),給大家看看有沒有優(yōu)點(diǎn)可取。
42、160; 用戶權(quán)限用一個(gè)int字段表示,可以放32位, 如果有第1,3,4模塊的權(quán)限則,值為1 4 8=13 _ _userId_userQx_ A? |? 13 _|_ 增加權(quán)限具體實(shí)現(xiàn) 如增加第四個(gè)模塊的權(quán)限,4的二進(jìn)制值8 update qxUser
43、set userQx = userQx|8 where userId='A' 刪除第四個(gè)模塊的權(quán)限 update qxUser set userQx = userQx&8 where userId='A' 如果刪除第四個(gè)模塊,則不加條件就可以了 update qxUse
44、r set userQx = userQx&8 以上在SqlServer2000企業(yè)版通過。 歡迎大家討論,有更好的方法大家共享呀 在Java 里 34&2 !=0就行了。 通過二,三兩步的理解,相信這篇文章就不會(huì)生澀了! 首先上文權(quán)限設(shè)計(jì)拙見(1)中只是想記錄下自己權(quán)限設(shè)計(jì)上的一點(diǎn)看法,以及將自己日常最常
45、用的權(quán)限解決方案記錄下來以供日后回顧,沒想到有朋友關(guān)注此類的設(shè)計(jì),那就只能先把代碼拿出來獻(xiàn)丑了,拋磚引玉,大家共同探討學(xué)習(xí)接著上文來說,上文所討論的權(quán)限設(shè)計(jì)是一條思路,但既然是web應(yīng)用,少不了數(shù)據(jù)庫的支持,本文我們來討論一下數(shù)據(jù)庫的設(shè)計(jì)。(以下想法及思路僅僅代表本人拙見)說到權(quán)限的數(shù)據(jù)庫設(shè)計(jì),必先理清權(quán)限中幾種實(shí)體及其關(guān)系,此部分想必有過設(shè)計(jì)權(quán)限經(jīng)驗(yàn)的同仁都知道怎么設(shè)計(jì)了,網(wǎng)上擺渡一下也是一褲衩子一褲衩子的,我們就在最平凡直觀的數(shù)據(jù)庫關(guān)系的基礎(chǔ)上來建立權(quán)限。下面是我的幾個(gè)表(所有的表都帶有一個(gè)pk_id,作為表的自動(dòng)生成的唯一主鍵): 用戶表(T_UserInfo): &
46、#160;1/*=*/ 2/* Table: T_UserInfo
47、 */ 3/*=*/ 4create table T_UserInfo 5( 6 pk_id NUMBER not null, 7 name VARCHAR2(20), 8 sex BOOLEAN, 9 a
48、ge int, 10 emp_num NUMBER, 11 polity int, 12 unit
49、160; VARCHAR2(50), 13 department VARCHAR2(20), 14 specialty int, 15 positio
50、n VARCHAR2(10), 16 offtel VARCHAR2(20), 17 famtel
51、; VARCHAR2(20), 18 post_state VARCHAR2(10), 19 remark &
52、#160; VARCHAR2(100), 20 constraint PK_T_USERINFO primary key (pk_id) 21); 實(shí)戰(zhàn)經(jīng)驗(yàn):用戶表就不多說了,都是一些常用字段,年齡、電話、職位等,建議大家建立一個(gè)通用一些,字段多一些的一個(gè)用戶表,便于以后擴(kuò)展,以后如果有特殊需求,不用擴(kuò)這個(gè)基本表,可以通過主外鍵關(guān)系來新建一個(gè)表,用于擴(kuò)充字段 角色表(T_RoleInfo):
53、;1/*=*/ 2/* Table: T_RoleInfo
54、0; */ 3/*=*/ 4create table T_RoleInfo 5( 6 pk_id number
55、160; not null, 7 role_name VARCHAR2(20), 8 role_desc
56、60; VARCHAR2(100), 9 parent_role_id NUMBER, 10 constraint PK_T_ROLEINFO primary key (pk_id) 11); 角色表中需要說明的就一個(gè)parent_role_id父角色id,此字段
57、用來擴(kuò)展角色的繼承關(guān)系。 資源表(T_ResourceInfo): 1/*=*/ 2/* Table: T_ResourceInfo
58、; */ 3/*=*/ 4create table T_ResourceInfo 5( 6 pk_id NUMBER
59、; not null, 7 module_name VARCHAR2(20), 8 module_
60、code VARCHAR2(10), 9 module_desc VARCHAR2(100), 10 privilege_name VARCHAR2(10),
61、 11 privilege_code CHAR, 12 privilege_desc VARCHAR2(100), 13 constraint PK_T_RESOURCEINFO primary key (pk_id)
62、;14); 這個(gè)表需要說明的就比較多了,首先該表用來記錄資源與資源權(quán)限,我這邊所謂的資源就是實(shí)體,就是數(shù)據(jù)庫表,角色需要對應(yīng)到資源,有些角色對該資源有權(quán)限,有些角色則對該資源無權(quán)限,角色可對此資源操作的權(quán)限也不同。說白了,就是不同的角色對不同的數(shù)據(jù)庫表的操作權(quán)限不同。因此我們這里的資源就是數(shù)據(jù)庫表。 module_name:資源名;module_code:資源代碼(存放數(shù)據(jù)庫表名); privilege_name:權(quán)限名;privilege_code:權(quán)限代碼(代表權(quán)限的code,也就是我們上文所說的權(quán)值)
63、;例如角色a對數(shù)據(jù)庫表T_UserInfo有添加與刪除的權(quán)限則該表應(yīng)該按照如下配置: module_name:人員信息; module_code:T_UserInfo privilege_name:添加與刪除 privilege_code:6 這里我們假設(shè)的是2的0次方為添加權(quán)限,2的1次方為添加權(quán)限,2的2次方為刪除權(quán)限,2的3次方為更新權(quán)限,則擁有添加與刪除權(quán)限就應(yīng)該為2的1次方+2 的2次方=6,其實(shí)2的幾次方代表什么含義我們可以另外開個(gè)數(shù)據(jù)庫表來配置(或者xml文件)此處我們忽略這些步驟。當(dāng)
64、然如果你的權(quán)限較多,譬如你還希望 a這個(gè)角色對人員信息表有上傳得權(quán)限,我們可以將將上傳權(quán)限定義為2的4次方,16,16的16進(jìn)制數(shù)為10,記錄在數(shù)據(jù)庫里的形式應(yīng)該為0x10如果a 角色擁有添加、刪除、更新、上傳權(quán)限,則a的權(quán)值應(yīng)該為2的1次方+2的2次方+2的3次方+2的4次方=30,用16進(jìn)制來表示就應(yīng)該為0x1E,記錄 16進(jìn)制數(shù)據(jù),你不用擔(dān)心位數(shù)不夠。 剩余的就是幾張關(guān)系表了:人員角色關(guān)系表(T_R_User_Role): 1/*=*/ 2/* Table: T_R_user_role
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Trilysine-TFA-生命科學(xué)試劑-MCE-4187
- KIF18A-IN-15-生命科學(xué)試劑-MCE-5317
- 4-4-Dimethoxyoctafluorobiphenyl-生命科學(xué)試劑-MCE-5198
- 1-3-Dinervonoyl-glycerol-生命科學(xué)試劑-MCE-1243
- 2025年度特色民宿體驗(yàn)住宿協(xié)議
- 二零二五年度消防設(shè)備定制設(shè)計(jì)與銷售合同
- 二零二五年度農(nóng)產(chǎn)品線上線下一體化購銷合同標(biāo)準(zhǔn)
- 施工現(xiàn)場施工防傳染病傳播制度
- 個(gè)人兼職用工合同模板
- 鄉(xiāng)村別墅租賃合同樣本
- 2025年上半年山東氣象局應(yīng)屆高校畢業(yè)生招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 人教版2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 【人教版化學(xué)】必修1 知識點(diǎn)默寫小紙條(答案背誦版)
- 江蘇省無錫市2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 全國第三屆職業(yè)技能大賽(無人機(jī)駕駛(植保)項(xiàng)目)選拔賽理論考試題庫(含答案)
- 對口升學(xué)語文模擬試卷(10)-江西?。ń馕霭妫?/a>
- 成長感恩責(zé)任高中主題班會(huì)-課件
- 建設(shè)項(xiàng)目全過程工程咨詢服務(wù)指引(咨詢企業(yè)版)(征求意見稿)
- 分手的協(xié)議書模板(5篇)
- 2020年度安徽省中考數(shù)學(xué)科目試卷
- 2023年山東藥品食品職業(yè)學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
評論
0/150
提交評論