熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

介紹——用戶認證管理設計方案

2013-11-23 19:15:09  來源: Java核心技術 

  用戶認證管理設計方案
  
  
  
   設計思路
  
  為了設計一套具有較強可擴展性的用戶認證管理需要建立用戶角色和權限等數據庫表並且建立之間的關系具體實現如下
  
   用戶
  用戶僅僅是純粹的用戶用來記錄用戶相關信息如用戶名密碼等權限是被分離出去了的用戶(User)要擁有對某種資源的權限必須通過角色(Role)去關聯
  
  用戶通常具有以下屬性
  
  ü     編號在系統中唯一
  
  ü     名稱在系統中唯一
  
  ü     用戶口令
  
  ü     注釋描述用戶或角色的信息
  
   角色
  角色是使用權限的基本單位擁有一定數量的權限通過角色賦予用戶權限通常具有以下屬性
  
  ü     編號在系統中唯一
  
  ü     名稱在系統中唯一
  
  ü     注釋描述角色信息
  
   權限
    權限指用戶根據角色獲得對程序某些功能的操作例如對文件的讀修改和刪除功能通常具有以下屬性
  
  ü     編號在系統中唯一
  
  ü     名稱在系統中唯一
  
  ü     注釋描述權限信息
  
   用戶與角色的關系
  一個用戶(User)可以隸屬於多個角色(Role)一個角色組也可擁有多個用戶用戶角色就是用來描述他們之間隸屬關系的對象用戶(User)通過角色(Role)關聯所擁有對某種資源的權限例如
  
  l       用戶(User)
  
  UserID      UserName        UserPwd
  
            張三         xxxxxx
  
            李四         xxxxxx
  
  ……
  
  l             角色(Role)
  
  RoleID           RoleName     RoleNote
  
             系統管理員    監控系統維護管理員
  
             監控人員     在線監控人員
  
             調度人員     調度工作人員
  
             一般工作人員  工作人員
  
    ……
  
  l     用戶角色(User_Role)
  
  UserRoleID      UserID      RoleID      UserRoleNote
  
                                 用戶張三被分配到角色系統管理員
  
                                 用戶李四被分配到角色監控人員
  
                                 用戶李四被分配到角色調度人員
  
  ……
  
    從該關系表可以看出用戶所擁有的特定資源可以通過用戶角色來關聯
  
   權限與角色的關系
  一個角色(Role)可以擁有多個權限(Permission)同樣一個權限可分配給多個角色例如
  
  l     角色(Role)
  
  RoleID      RoleName     RoleNote
  
             系統管理員    監控系統維護管理員
  
             監控人員     在線監控人員
  
             調度人員     調度工作人員
  
             一般工作人員  工作人員
  
    ……
  
  l     權限(Permission)
  
  PermissionID   PermissionName    PermissionNote
  
           增加監控         允許增加監控對象
  
           修改監控         允許修改監控對象
  
           刪除監控         允許刪除監控對象
  
           察看監控信息    允許察看監控對象
  
  ……
  
  l     角色權限(Role_Permission)
  
  RolePermissionID  RoleID PermissionID RolePermissionNote
  
                     角色系統管理員具有權限增加監控
  
                     角色系統管理員具有權限修改監控
  
                     角色系統管理員具有權限刪除監控
  
                     角色系統管理員具有權限察看監控
  
                     角色監控人員具有權限增加監控
  
                     角色監控人員具有權限察看監控
  
  ……
  
    由以上例子中的角色權限關系可以看出角色權限可以建立角色和權限之間的對應關系
  
   建立用戶權限
  用戶權限系統的核心由以下三部分構成創造權限分配權限和使用權限
  
  第一步由Creator創造權限(Permission)Creator在設計和實現系統時會劃分利用存儲過程CreatePermissionInfo(@PermissionName@PermissionNote)創建權限信息指定系統模塊具有哪些權限
  
  第二步由系統管理員(Administrator)創建用戶和角色並且指定用戶角色(User-Role)和角色權限(Role-Permission)的關聯關系
  
  )Administrator具有創建用戶修改用戶和刪除用戶的功能
  
  
  
  l 存儲過程CreateUserInfo(@UserName@UserPwd)創建用戶信息
  
  l 存儲過程ModifyUserInfo(@UserName@UserPwd)修改用戶信息
  
  l 存儲過程DeleteUserInfo(@UserID)刪除用戶信息
  
  )Administrator具有創建角色和刪除角色的功能
  
  
  
  l 存儲過程CreateRoleInfo(@RoleName@RoleNote)創建角色信息
  
  l 存儲過程DeleteRoleInfo(@RoleID)刪除角色信息
  
  )Administrator具有建立用戶和角色角色和權限的關聯關系功能
  
  l 存儲過程GrantUserRole(@UserID@RoleID@UserRoleNote)建立用戶和角色的關聯關系
  
  l 存儲過程DeleteUserRole(@UserRoleID)刪除用戶和角色的關聯關系
  
  l 存儲過程GrantRolePermission(@RoleID@PermissionID@RolePermissionNote)建立角色和權限的關聯關系
  
  l 存儲過程DeleteRolePermission(@RolePermissionID)刪除角色和權限的關聯關系
  
  第三步用戶(User)使用Administrator分配給的權限去使用各個系統模塊利用存儲過程GetUserRole(@UserID @UserRoleID output)GetRolePermission(@RoleID@Role
  
  PermissinID output)獲得用戶對模塊的使用權限
  
   用戶認證實現
  當用戶通過驗證後由系統自動生成一個位的TicketID保存到用戶數據庫表中建立存儲過程Login(@UserID@UserPwd@TicketID output)進行用戶認證認證通過得到一個TicketID否則TicketID為null其流程圖如下
  
  
  圖 Login流程圖
  
  得到TicketID後客戶端在調用服務端方法時傳遞TicketID通過存儲過程JudgeTicketPermission(@TicketID@PermissionID)判斷TicketID對應的用戶所具有的權限並根據其權限進行方法調用
  
  當用戶退出系統時建立存儲過程Logout(@UserID)來退出系統當用戶異常退出系統時根據最後的登陸時間(LastSignTime)確定用戶的TickeID建立存儲過程ExceptionLogout(@UserID@LastSignTime)處理用戶的異常退出
  
  
  圖 Logout流程圖
  
  WebService可以采用SoapHeader中寫入TicketID來使得TicketID從客戶端傳遞給服務端Net Remoting可以采用CallContext類來實現TicketID從客戶端傳遞給服務端
  
   數據庫設計
  
   數據庫表
  
  圖 數據庫關系圖
  
   數據庫表說明
   用戶表(Static_User)
  
   
  
  
   角色表(Static_Role)
  
   
  
   用戶-角色表(Static_User_Role)
  
   
  
   權限表(Static_Permission)
  
   
  
   角色-權限表(Static_Role_Permission)
  
  
  
  技術概要
  
   WebService SoapHeader
  對 SQL 數據庫執行自定義身份驗證和授權在這種情況中應向服務傳遞自定義憑據(如用戶名和密碼)並讓服務自己處理身份驗證和授權 將額外的信息連同請求一起傳遞給 XML Web 服務的簡便
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26525.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.