权限控制的两种主要方式详述
權限控制的兩種主要方式詳述
粗粒度URL級別的權限控制
權限控制主要分為粗粒度URL級別的權限控制和細粒度的方法級別權限控制。
我們在后臺系統的操作,無論 是點擊一個按鈕,還是點擊一個菜單項,都是在訪問服務器端的一個資源,而標識服務器資源的就是URL。如何控制用戶對服務器資源的操作權限呢?在我們的數據庫中會有兩張表:用戶表和權限控制表。用戶表中的用戶會同權限控制表中的相關權限進行關聯,通過Fliter判斷當前用戶是否具有權限對應著URL地址,如果用戶對應的權限列表中沒有當前訪問的URL地址,就提示權限不足。如果用戶對應的權限列表中含有URL地址,允許用戶訪問。
簡單來說,基于URL粗粒度的權限控制,就是在數據庫中存放用戶、權限、訪問URL對應的關系,在當前用戶訪問一個URL地址時,就去查詢數據庫,判斷用戶當前具有的權限,是否包含這個URL,如果包含就允許訪問,如果不包含,就提示權限不足。
細粒度方法級別的權限控制
細粒度方法級別的權限控制相較粗粒度的權限控制粒度更加精細。同樣地,在點擊后臺系統地一個按鈕或者是一個菜單項時,都是在訪問服務器端的一個URL資源,而這個URL地址會涉及到表現層、業務層和DAO數據層的方法。粗粒度的是通過查詢數據表中當前用戶的相關權限進行比對而判斷是否要對用戶放行,不同的是,細粒度的權限控制是基于自定義的注解實現的。比如:在業務層中的某個方法上添加一個注解@Permission(“自定義權限名稱”),在這個注解中就包含了訪問方法需要的權限信息,在數據庫中同樣創建兩張表:用戶表和權限表,權限表中的權限名稱就要于剛剛在方法上添加的注解中的自定義名稱保持一致,說直白一點,就是在權限表中描述了權限信息,再通過注解的形式添加到方法上,這樣就達到了對方法進行權限控制的目的,用戶表中的用戶對應的再權限表中的權限也在數據表中進行關聯,用戶能訪問哪些方法、哪些資源就通過數據表結合注解來控制了。更底層的實現原理是:spring管理著通過applicationContext.xml中配置的bean所對應的對象,在用戶訪問一個URL地址時,spring就可以返回被訪問的真實對象的代理對象,在訪問真實對象的每個方法時,代理對象就會取查詢數據庫判斷當前用戶是否具有注解中定義的權限,因為是真實對象的代理對象,所以是能夠實現這一系列操作的,最后根據判斷是否具有權限的結果來控制用戶的訪問。
簡單來說,細粒度的權限控制是通過代理對象結合自定義的注解實現,在用戶訪問目標對象的方法時,在方法上添加權限注解信息,同時對目標對象創建代理對象,在訪問真實對象之前先訪問代理對象,代理對象前往數據庫查詢權限數據判斷用戶是否具有注解上描述所需要的權限。如果具備訪問權限,就允許訪問,不具備訪問權限,就攔截訪問,提示權限不足。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的权限控制的两种主要方式详述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【面试题】CookieSession
- 下一篇: 权限控制相关数据表分析和创建