1?設(shè)計思路
為了設(shè)計一套具有較強(qiáng)可擴(kuò)展性的用戶認(rèn)證管理,需要建立用戶、角色和權(quán)限等數(shù)據(jù)庫表,并且建立之間的關(guān)系,具體實現(xiàn)如下。
1.1?用戶
用戶僅僅是純粹的用戶,用來記錄用戶相關(guān)信息,如用戶名、密碼等,權(quán)限是被分離出去了的。用戶(User)要擁有對某種資源的權(quán)限,必須通過角色(Role)去關(guān)聯(lián)。
用戶通常具有以下屬性:
ü?編號,在系統(tǒng)中唯一。
ü?名稱,在系統(tǒng)中唯一。
ü?用戶口令。
ü?注釋,描述用戶或角色的信息。
1.2 角色
角色是使用權(quán)限的基本單位,擁有一定數(shù)量的權(quán)限,通過角色賦予用戶權(quán)限,通常具有以下屬性:
ü?編號,在系統(tǒng)中唯一。
ü?名稱,在系統(tǒng)中唯一。
ü?注釋,描述角色信息
1.3 權(quán)限
?????? 權(quán)限指用戶根據(jù)角色獲得對程序某些功能的操作,例如對文件的讀、寫、修改和刪除功能,通常具有以下屬性:
ü?編號,在系統(tǒng)中唯一。
ü?名稱,在系統(tǒng)中唯一。
ü?注釋,描述權(quán)限信息
1.4 用戶與角色的關(guān)系
一個用戶(User)可以隸屬于多個角色(Role),一個角色組也可擁有多個用戶,用戶角色就是用來描述他們之間隸屬關(guān)系的對象。用戶(User)通過角色(Role)關(guān)聯(lián)所擁有對某種資源的權(quán)限,例如
l?用戶(User):
UserID????? UserName????? UserPwd
1?????????????????? 張三????????????? ?? xxxxxx
2?????????????????? 李四????????????? ?? xxxxxx????
……
l?角色(Role):
RoleID?????????? RoleName?????? ?? RoleNote
?????? 01????????????????? 系統(tǒng)管理員??? ?? 監(jiān)控系統(tǒng)維護(hù)管理員
?????? 02????????????????? 監(jiān)控人員?????? ?? 在線監(jiān)控人員
?????? 03????????????????? 調(diào)度人員?????? ?? 調(diào)度工作人員
?????? 04????????????????? 一般工作人員?? 工作人員
?????? ……
l?用戶角色(User_Role):
UserRoleID ????????? UserID?????????? RoleID?????????? UserRoleNote
1?????????????????? ??? 1?????????????????? 01????????????????? 用戶“張三”被分配到角色“系統(tǒng)管理員”
2?? ???????????????????? 2?????????????????? 02????????????????? 用戶“李四”被分配到角色“監(jiān)控人員”
3?? ???????????????????? 2?????????????????? 03????????????????? 用戶“李四”被分配到角色“調(diào)度人員”
……
?????? 從該關(guān)系表可以看出,用戶所擁有的特定資源可以通過用戶角色來關(guān)聯(lián)。
1.5 權(quán)限與角色的關(guān)系
一個角色(Role)可以擁有多個權(quán)限(Permission),同樣一個權(quán)限可分配給多個角色。例如:
l?角色(Role):
RoleID?????????? RoleName?????? ?? RoleNote
?????? 01????????????????? 系統(tǒng)管理員??? ?? 監(jiān)控系統(tǒng)維護(hù)管理員
?????? 02????????????????? 監(jiān)控人員?????? ?? 在線監(jiān)控人員
?????? 03????????????????? 調(diào)度人員?????? ?? 調(diào)度工作人員
?????? 04????????????????? 一般工作人員?? 工作人員
?????? ……
l?權(quán)限(Permission):
PermissionID??? ??PermissionName??? ???PermissionNote
0001???????????????????? ?? 增加監(jiān)控??????????????? ?允許增加監(jiān)控對象
0002???????????????????? ?? 修改監(jiān)控??????????????? ?允許修改監(jiān)控對象
0003???????????????????? ?? 刪除監(jiān)控??????????????? ?允許刪除監(jiān)控對象
0004???????????????????? ?? 察看監(jiān)控信息????? ?允許察看監(jiān)控對象
……
l?角色權(quán)限(Role_Permission):
RolePermissionID?? RoleID?PermissionID?RolePermissionNote
1????????????????????????? ?? 01??????????? 0001???? ?? 角色“系統(tǒng)管理員”具有權(quán)限“增加監(jiān)控”
2????????????????????????? ?? 01??????????? 0002???? ?? 角色“系統(tǒng)管理員”具有權(quán)限“修改監(jiān)控”
3????????????????????????? ?? 01??????????? 0003???? ?? 角色“系統(tǒng)管理員”具有權(quán)限“刪除監(jiān)控”
4????????????????????????? ?? 01??????????? 0004???? ?? 角色“系統(tǒng)管理員”具有權(quán)限“察看監(jiān)控”
5????????????????????????? ?? 02??????????? 0001???? ?? 角色“監(jiān)控人員”具有權(quán)限“增加監(jiān)控”
6????????????????????????? ?? 02??????????? 0004???? ?? 角色“監(jiān)控人員”具有權(quán)限“察看監(jiān)控”
……
2.2 數(shù)據(jù)庫表說明
2.2.1 用戶表(Static_User)
UserID????路線編號varchar(20)
UserName????用戶名稱varchar(20)?
UserPwd????用戶密碼varchar(20)?
LastSignTime????最后登陸時間datatime?
SignState????用戶登陸狀態(tài)標(biāo)記int?
TickeID????驗證票記錄編號varchar(128)?
2.2.2 角色表(Static_Role)
RoleID????角色編號varchar(20)
RoleName????角色名稱varchar(20)?
RoleNote????角色信息描述varchar(20)?
2.2.3 用戶-角色表(Static_User_Role)
UserRoleID????用戶角色編號varchar(20)
UserID????用戶編號varchar(20)
RoleID????角色編號varchar(20)
UserRoleNote????用戶角色信息描述varchar(20)?
2.2.4 權(quán)限表(Static_Permission)
PermissionID????編號varchar(20)
PermissionName????權(quán)限名稱varchar(20)?
PermissionNote????息信息描述varchar(20)?
2.2.5 角色-權(quán)限表(Static_Role_Permission)
RolePermissionID????角色權(quán)限編號varchar(20)
RoleID????角色編號varchar(20)
PermissionID????權(quán)限編號varchar(20)
RolePermissionNote????角色權(quán)限信息描述varchar(20)?
轉(zhuǎn)自http://www.cnblogs.com/cxd4321/archive/2009/01/12/1374140.html