用戶權(quán)限管理設(shè)計(jì)方案_第1頁
用戶權(quán)限管理設(shè)計(jì)方案_第2頁
用戶權(quán)限管理設(shè)計(jì)方案_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、用戶權(quán)限管理設(shè)計(jì)方案用戶認(rèn)證管理設(shè)計(jì)方案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)要擁有對(duì)某種資源的權(quán)限,必須通過角色(Role) 去關(guān)聯(lián)。用戶通常具有以下屬性:編號(hào),在系統(tǒng)中唯一。名稱,在系統(tǒng)中唯一。 用戶口令。注釋,描述用戶或角色的信息。1.2角色角色是使用權(quán)限的基本單位,擁有一定數(shù)量的權(quán)限,通過角色賦予用戶權(quán)限, 通常具有以下屬性:編號(hào),在系統(tǒng)中唯一。 名稱,在系統(tǒng)中唯一。 注釋,描述角色信息1.

2、3權(quán)限權(quán)限指用戶根據(jù)角色獲得對(duì)程序某些功能的操作,例如對(duì)文件的 讀、寫、修改和刪除功能,通常具有以下屬性:編號(hào),在系統(tǒng)中唯一。 名稱,在系統(tǒng)中唯一。 注釋,描述權(quán)限信息1.4用戶與角色的關(guān)系一個(gè)用戶(User)可以隸屬于多個(gè)角色(Role),一個(gè)角色組也可擁有多個(gè) 用戶,用戶角色就是用來描述他們之間隸屬關(guān)系的對(duì)象。用戶( User)通過角 色(Role )關(guān)聯(lián)所擁有對(duì)某種資源的權(quán)限,例如用戶(User):UserIDUserNameUserPwd1張'三2xxxxxx李四xxxxxx角色(Role):RolelDRoleNameRoleNote01系統(tǒng)管理員監(jiān)控系統(tǒng)維護(hù)管理員02監(jiān)控人

3、員03在線監(jiān)控人員調(diào)度人員04調(diào)度工作人員一般工作人員工作人員用戶角色(User Role):UserRoleIDUserIDRoleIDUserRoleNote1 101用戶“張三”被分配到角色“系統(tǒng)管理員”2 202用戶“李四”被分配到角色“監(jiān)控人員”3 203用戶“李四”被分配到角色“調(diào)度人員”從該關(guān)系表可以看出,用戶所擁有的特定資源可以通過用戶角色 來關(guān)聯(lián)。1.5權(quán)限與角色的關(guān)系一個(gè)角色(Role)可以擁有多個(gè)權(quán)限(Permission ),同樣一個(gè)權(quán)限可分配 給多個(gè)角色。例如:角色(Role):RoleID01RoleNameRoleNote系統(tǒng)管理員監(jiān)控系統(tǒng)維護(hù)管理員02監(jiān)控人員在

4、線監(jiān)控人員03調(diào)度人員調(diào)度工作人員04一般工作人員工作人員權(quán)限(Permission ):Permissio nIDPermissi onN amePermissi onNote0001增加監(jiān)控允許增加監(jiān)控對(duì)象0002修改監(jiān)控允許修改監(jiān)控對(duì)象0003刪除監(jiān)控允許刪除監(jiān)控對(duì)象0004察看監(jiān)控信息允許察看監(jiān)控對(duì)象角色權(quán)限(Role Permission ):RolePermissio nIDRoleIDPermissi onlDRolePermissi onN ote1010001角色“系統(tǒng)管理員”具有權(quán)限“增加監(jiān)控”2010002角色“系統(tǒng)管理員”具有權(quán)限“修改監(jiān)控”3010003角色“系統(tǒng)管理

5、員”具有權(quán)限“刪除監(jiān)控”4010004角色“系統(tǒng)管理員”具有權(quán)限“察看監(jiān)控”5020001角色“監(jiān)控人員”具有權(quán)限“增加監(jiān)控”6020004角色“監(jiān)控人員”具有權(quán)限“察看監(jiān)控”由以上例子中的角色權(quán)限關(guān)系可以看出,角色權(quán)限可以建立角色 和權(quán)限之間的對(duì)應(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ǔ)過程CreatePermissionlnfo(Permissio nName,Permissi on Note創(chuàng)建權(quán)限信息,指定系統(tǒng)模塊具有哪些權(quán)限。

6、第二步由系統(tǒng)管理員(Administrator )創(chuàng)建用戶和角色,并且指定用戶角 色(User Role)和角色權(quán)限(Role Permission )的關(guān)聯(lián)關(guān)系。1)Admi ni strator 具有創(chuàng)建用戶、修改用戶和刪除用戶的功能:存儲(chǔ)過程 CreateUserlnfo (UserName,UserP)創(chuàng)建用戶信息;存儲(chǔ)過程 ModifyUserlnfo (UserName,UserP)w修改用戶信息;存儲(chǔ)過程DeleteUserlnfo (UserID刪除用戶信息;2)Admi ni strator 具有創(chuàng)建角色和刪除角色的功能:存儲(chǔ)過程 CreateRoleInfo (RoleNa

7、me,RoleNo)e創(chuàng)建角色信息;存儲(chǔ)過程DeleteRolelnfo(RoleID)刪除角色信息;3) Administrator具有建立用戶和角色、角色和權(quán)限的關(guān)聯(lián)關(guān)系功能:存儲(chǔ)過程 GrantUserRole (UserID,RoleID,UserRoleNote建立用戶和角色的關(guān)聯(lián)關(guān)系;存儲(chǔ)過程DeleteUserRole(UserRolelD)刪除用戶和角色的關(guān)聯(lián)關(guān)系;存儲(chǔ)過程Gran tRolePermissio n( RolelD,Permissio nlD,RolePermissio nN ote) 建立角色和權(quán)限的關(guān)聯(lián)關(guān)系;存儲(chǔ)過程 DeleteRolePermission

8、(RolePermissionID)刪除角色和權(quán)限的關(guān)聯(lián)關(guān)系;第三步用戶(User)使用Administrator分配給的權(quán)限去使用各個(gè)系統(tǒng)模塊。 利用存儲(chǔ)過程 GetUserRole (UserID, UserRoleIDoutput ) ,GetRolePermission (RolelD,Role- -Permissi nID output)獲得用戶對(duì)模塊的使用權(quán)限。1.7用戶認(rèn)證實(shí)現(xiàn)當(dāng)用戶通過驗(yàn)證后,由系統(tǒng)自動(dòng)生成一個(gè) 128位的TicketID保存到用戶數(shù) 據(jù)庫表中,建立存儲(chǔ)過程 Login (UserlD,UserPwd,TicketlD output)進(jìn)行 用戶認(rèn)證,認(rèn)證通過得到

9、一個(gè) TicketID,否則TicketID 為null。其流程圖如 下:圖1 Login流程圖得到TicketID后,客戶端在調(diào)用服務(wù)端方法時(shí)傳遞 TicketID,通過存儲(chǔ)過 程 JudgeTicketPermission (TicketlD,PermissionID )判斷 TicketID 對(duì)應(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í)間(LastSignTime )確定用戶的TickelD, 建立存儲(chǔ)過程 ExceptionLogout (UserlD,LastSig

10、nTim處理用戶的異常退 出。圖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 用戶表(Static_User)Static UserStatic User 字段 名詳細(xì)解釋類型備注UserID路線編號(hào)varchar(20)PKUserName用戶名稱varchar(20)UserPwd用戶密碼varchar(20)LastSig

11、 nTime最后登陸時(shí)間datatimeSig nState用戶登陸狀態(tài)標(biāo) 記intTickeID驗(yàn)證票記錄編號(hào)varchar(128)2.2.2 角色表(Static_Role )Static_RoleStatic User 字段 名詳細(xì)解釋類型備注RoleID角色編號(hào)varchar(20)PKRoleName角色名稱varchar(20)RoleNote角色信息描述varchar(20)2.2.3 用戶一角色表(Static_User_Role )Static_User_RoleStatic User 字段 名詳細(xì)解釋類型備注UserRoleID用戶角色編號(hào)varchar(20)PKUse

12、rID用戶編號(hào)varchar(20)FKRoleID角色編號(hào)varchar(20)FKUserRoleNote用戶角色信息描 述varchar(20)224 權(quán)限表(Static_Permission)Static Permissio nStatic User 字段 名詳細(xì)解釋類型備注Permissio nID編號(hào)varchar(20)PKPermissio nN ame權(quán)限名稱varchar(20)Permissi onN ote全息信息描述varchar(20)2.2.5 角色權(quán)限表(Static_Role_Permission)Static Role Permissi onStatic

13、User 字段名詳細(xì)解釋類型備注RolePermissio nID角色權(quán)限編號(hào)varchar(20)PKRoleID角色編號(hào)varchar(20)FKPermissio nID權(quán)限編號(hào)varchar(20)FKRolePermissi onN ote角色權(quán)限信息描 述varchar(20)3 .net技術(shù)概要3.1 WebService SoapHeader對(duì)SQL數(shù)據(jù)庫執(zhí)行自定義身份驗(yàn)證和授權(quán)。在這種情況中,應(yīng)向服務(wù)傳遞 自定義憑據(jù)(如用戶名和密碼),并讓服務(wù)自己處理身份驗(yàn)證和授權(quán)。將額外的信息連同請(qǐng)求一起傳遞給 XMLWeb服務(wù)的簡便方法是通過SOAP標(biāo)頭。為此, 需要在服務(wù)中定義一個(gè)從S

14、OAPHeader派生的類,然后將服務(wù)的公共字段聲明 為該類型。這在服務(wù)的公共合同中公開,并且當(dāng)從 WebServiceUtil.exe 創(chuàng)建代理時(shí)可由客戶端使用,如下例所示:using System.Web.Services;using System.Web.Services.Protocols;/ AuthHeader class exte nds from SoapHeader public class AuthHeader : SoapHeader public stri ngUser name;public stri ngPassword;public class HeaderSer

15、vice : WebService public AuthHeader sHeader;服務(wù)中的每個(gè) WebMethod都可以使用SoapHeader自定義屬性定義一組關(guān) 聯(lián)的標(biāo)頭。默認(rèn)情況下,標(biāo)頭是必需的,但也可以定義可選標(biāo)頭。SoapHeader屬 性指定公共字段的名稱或者Clie nt或Server類的屬性(本標(biāo)題中稱為 Headers屬性)。在為輸入標(biāo)頭調(diào)用方法前,WebService設(shè)置Headers屬性的值;而當(dāng)方法為輸出標(biāo)頭返回時(shí),WebService檢索該值。WebMethod(Description="This method requires a custom so

16、ap header set by the caller")SoapHeader("sHeader")public stri ng SecureMethod() if (sHeader = null )return "ERROR: Please supply credentials" elsereturn "USER: " + sHeader.Username;然后,客戶端在調(diào)用要求標(biāo)頭的方法之前,直接在代理類上設(shè)置標(biāo)頭,如下 面的示例所示:HeaderService h = n ewHeaderService();AuthH

17、eader myHeader = n ewAuthHeader();myHeader.Usern ame = "user name" myHeader.Password = "password" h.AuthHeader = myHeader;String result = h.SecureMethod();3.2 .Net Remoti ng的安全認(rèn)證方式CallContext提供與執(zhí)行代碼路徑一起傳送的屬性集,CallContext是類似于方法調(diào)用的線程本地存儲(chǔ)的專用集合對(duì)象,并提供對(duì)每個(gè)邏輯執(zhí)行線程都唯 一的數(shù)據(jù)槽。數(shù)據(jù)槽不在其他邏輯線程上的調(diào)用上

18、下文之間共享。當(dāng) CallCon text沿執(zhí)行代碼路徑往返傳播并且由該路徑中的各個(gè)對(duì)象檢查時(shí),可 將對(duì)象添加到其中。當(dāng)對(duì)另一個(gè) AppDoma in中的對(duì)象進(jìn)行遠(yuǎn)程方法調(diào)用時(shí), CallCon text 類將生成一個(gè)與該遠(yuǎn)程調(diào)用一起傳播的LogicalCallCo ntext實(shí)例。只有公開ILogicalThreadAffinative接口并存儲(chǔ)在 CallContext 中的對(duì)象被在LogicalCallContext中傳播到AppDomain外部。不支持此接口的對(duì)象不在LogicalCallCo ntext實(shí)例中與遠(yuǎn)程方法調(diào)用一起傳輸。CallCo ntext.SetData方法存儲(chǔ)給定

19、對(duì)象并將其與指定名稱關(guān)聯(lián),CallCon text.GetData 方法從CallCo ntext中檢索具有指定名稱的對(duì)象。下面的代碼示例說明如何使用 SetData方法將主體和標(biāo)識(shí)對(duì)象傳輸?shù)竭h(yuǎn)程 位置以進(jìn)行標(biāo)識(shí)。public class Clie ntClass public static voidMai n() Gen ericIde ntity ide nt =n ewGe nericlde ntity("Bob");Gen ericPri ncipal prpal =n ewGe nericPri ncipal(ide nt,Newstri ng "Lev

20、el1"); LogicalCallC on textData data = n ewLogicalCallC on textData(prpal);/Enter data into the CallCo ntextCallC on text.SetData("test data", data);Con sole.WriteLi ne(data. numO fAccesses);Cha nn elServices.RegisterCha nn el(n ewTcpCha nn el();Remoti ngCon figuratio n.RegisterActiva

21、tedClie ntType( typeof(HelloServiceClass), "tcp:/localhost:8082");HelloServiceClass service =n ewHelloServiceClass();if (service =null ) Con sole.WriteLi ne("Could not locate server."); return ;/ call remote methodCon sole.WriteLi ne();Con sole.WriteL in e("Calli ng remote o

22、bject");Co nsole.WriteL in e(service.HelloMethod("Cavema n");Co nsole.WriteL in e(service.HelloMethod("Spacema n");Co nsole.WriteL in e(service.HelloMethod("Bob");Console.WriteLine("Finished remote object call");Con sole.WriteLi ne();/Extract the retur ne

23、d data from the call con text LogicalCallC on textData retur nedData =(LogicalCallCo ntextData)CallCo ntext.GetData("test data");Con sole.WriteLi ne(data. numO fAccesses);Con sole.WriteLi ne(returnedData. num OfAccesses);下面的代碼示例說明如何使用GetData方法將主體和標(biāo)識(shí)對(duì)象傳輸?shù)竭h(yuǎn)程位置以進(jìn)行標(biāo)識(shí)。using System;using System.

24、Text;using System.Runtime.Remoting.Messaging;using System.Security.Principal;public class HelloServiceClass : MarshalByRefObject static int n_instances;int instanceNum;public HelloServiceClass() n_in sta nces+;in sta nceNum = n_in sta nces;Console.WriteLine(this.GetType().Name + " has been crea

25、ted.In sta nee # = 0", i nsta nceNum);HelloServiceClass() Console.WriteLine("Destroyed instance 0 ofHelloServiceClass.", in sta nceN um);public String HelloMethod( String name) /Extract the call con text data LogicalCallC on textData data =(LogicalCallCo ntextData)CallCo ntext.GetData

26、("test data");IPri ncipal myPri ncipal = data.Pri ncipal;/Check the user ide ntityif (myPrincipal.Identity.Name = "Bob") Con sole.WriteLi ne("nHello0, you are ide ntified!",myPri ncipal.Ide ntity.Name);Con sole.WriteLi ne(data. num OfAccesses);else Con sole.WriteL in e(

27、"Goaway! You are not ide ntified!");return String.Empty;/ calculate and retur n result to clie nt return "Hi there " + name + "."4詳細(xì)代碼設(shè)計(jì)4.1 WebService 代碼設(shè)計(jì)WebService端代碼主要進(jìn)行對(duì)數(shù)據(jù)庫的操作,建立起Client操作數(shù)據(jù)庫所需要的方法,供Client的端調(diào)用。1)class UserInfoMng()用戶信息管理類,其中包括方法:CreateUserI nfo(stri

28、ng UserName stri ng UserPwd)建立用戶信息,調(diào)用存儲(chǔ)過程 CreateUserI nfo ( UserName,UserP)wdModifyUserl nfo(stri ng UserName stri ng UserPwd)修改用戶信息,調(diào)用存儲(chǔ)過程 ModifyUserl nfo (UserName,UserP)wdDeleteUserl nfo()刪除用戶信息,調(diào)用存儲(chǔ)過程DeleteUserI nfo(UserID)2) class UserAuthentication()用戶認(rèn)證類,用來實(shí)現(xiàn)用戶角色、權(quán)限的設(shè)置,包括方法:CreatePermissio nI

29、n fo(stri ng Permissi onN ame string Permissi-onNote)建立權(quán)限信息,調(diào)用存儲(chǔ)過程 CreatePermissionlnfo(Permissi onN ame,Permissi onN oteCreateRole In fo(stri ng RoleName stri ng RoleNote)建立角色信息,調(diào)用存儲(chǔ)過程 CreateRoleI nfo(RoleName,RoleNote)DeleteRole Info()刪除角色信息,調(diào)用存儲(chǔ)過程DeleteRoleI nfo(RoleID)Gran tUserRole(stri ng UserID stri ng RoleID stri ng UserRoleNote)授予用戶角色,調(diào)用存儲(chǔ)過程 Gran tUserRole(UserlD,RolelD,UserRoleNote)DeleteUserRole()刪除用戶角色,調(diào)用存儲(chǔ)過程DeleteUserRole(UserRoleID)Gran tRolePermissio n(stri ngRoleID stri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論