權限中定義的是用戶和事情之間的關系,並沒有涉及到角色。所以,如果不使用角色也可以實現成員資格管理。但是,角色作為某些用戶的集合,這樣對制定規格是更為方便、合理,也更符合業務邏輯的客觀存在形式。 即:通過角色對用戶進行權限管理。
權限管理系統功能分為:授權與認證
4、授權,指將權限授予角色或用戶
a) 如果用戶A擁有角色B、角色C,那麽,缺省的情況下,用戶A將擁有被分配給角色A和角色C的所有權限(即默認情況下,用戶A繼承其擁有的角色所具有的所有權限)
b) 如果用戶擁有多個角色,那麽用戶的權限是這些角色權限的合集
c) 如果用戶擁有多個角色,而且角色之間的授權有沖突(比如對同壹個資源的同壹個操作,壹個角色為“允許”,另外壹個角色為“不允許”),將以優先級別高的角色為準(所謂優先級別,也就是對於這個用戶所擁有的角色而言,是有順序的,同壹個角色在不同的用戶那裏可能擁有不同的優先級)
5. 認證,指用戶訪問資源的某些操作時,根據授權,判斷是否允許用戶的訪問
a)在用戶訪問的時候,需要進行即時的判斷(是否有權訪問)
員工職位=角色-》設置權限。權限有樹形結構
為角色分配權限-》分配子權限,角色也就有父權限。
壹、權限有哪些功能:控制哪些用戶可以使用哪些功能。
1,初始化權限:
向數據庫插入所有的權限數據,這個操作只在安裝做壹次。ps:權限沒有增刪改(因為功能已經開發完)
插入壹個超級管理員用戶,這個用戶有所有的權限,並且他的權限不可以被修改與刪除。
2,分配權限:
指定哪些用戶有哪些權限(某權限就是使用某功能的許可,也就是某URL的訪問許可)。
是給Role分配權限(用戶的權限就是用戶所有角色的權限的合集)。
3,使用權限:
1,用戶登錄後才能使用OA中的功能(登錄、註銷)。
2,左側的菜單是根據權限顯示的。
3,右側頁面中的鏈接是根據權限顯示的。
4,驗證每壹個請求的權限,有權限才能訪問。
權限= 操作+資源
控制權限---》控制url
二、整體思路
某權限就是使用某功能的許可,
壹個功能就是壹個多個URL(在ItcastOA中有兩種情況):
1,壹個功能對應1個URL,例:刪除用戶功能對應的URL是userAction_delete。
2,壹個功能對應2個URL,例:添加用戶功能對應的URL是userAction_addUI(添加頁面的顯示)與uesrAction_add。
功能的使用許可,也就是某URL的訪問許可。
分配權限就是指定用戶可以訪問哪些URL(白名單)。
每個功能應對應壹個唯壹的名稱,以便用戶分配權限時看到的是名稱,最終關聯的還是URL。
--------- 舉例 --------
資源:用戶
操作:增、刪、改、查、初始化密碼
資源+操作 = 權限
用戶增 userAction_addUI, userAction_add
用戶刪 userAction_delete
用戶改 userAction_editUI, userAction_edit
用戶查 userAction_list
用戶初始化密碼 userAction_initPassword
-----------------------
三、設計實體
權限分為三級:頂級菜單、二級菜單、右側頁面中的鏈接。
選中壹個權限時,應同時選中所有直系上級的權限。
取消壹個權限時,應同時取消他所有的下級權限(所有子孫權限)。
取消同級的所有權限時,就同時取消他們的上壹級權限。
開發思路:
1)用戶登錄,登錄成功後將登錄用戶放入Session,並將用戶對應的角色和角色對應的權限立即查詢
2)左側菜單數據從數據庫中獲取
* 通過壹個監聽器,項目啟動時加載權限數據,放入application作用域
* 用戶登錄成功之後,直接從application作用域中獲取權限數據展示
3)左側菜單按照登錄人的權限展示
<s:if test="#session.loginUser.hasPrivilegeByName(name)">
4)在數據庫中加入超級管理員,在程序中判斷如果當前登錄用戶是超級管理員,就直接顯示所有權限菜單
5)右側連接和按鈕按照權限顯示
6)編寫自定義攔截器,攔截用戶的所有針對Action的請求
1,初始化權限:安裝時:執行壹次--》完成權限數據庫的初始化,分配超級管理員
(用戶通過批處理文件進行初始化權限數據表文件)
2,權限數據:即菜單欄的顯示----》* 通過壹個監聽器,項目啟動時加載所有權限數據,放入application作用域
* 用戶登錄成功之後,直接從application作用域中獲取權限數據展示
監聽器實現:
再web.xml中配置監聽器
頁面處理:從Session中獲取登錄用戶,根據用戶的角色最終獲取對應的權限,判斷用戶的權限是否和當前循環出的權限是否壹致,如果壹致就顯示
3,右側連接和按鈕按照權限顯示
————————————————
版權聲明:本文為CSDN博主「jongsuk_sun」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:/jongsuk_sun/article/details/93081424