授權即是訪問控制,是對資源訪問管理過程。它將判斷使用者在應用程式中是否對資源有相應的訪問許可權。比如:判斷乙個使用者有檢視頁面的許可權,編輯資料的許可權,擁有某一按鈕的許可權,以及是否擁有列印的許可權等等。
授權有三個核心元素:許可權,角色和使用者。
1 許可權
在apache shiro
中許可權是安全機制中最核心的元素。它在應用程式中明確地宣告了被允許的行為,乙個格式良好的許可權宣告可以清晰地表達出使用者與資源互動時擁有的許可權。
許可權宣告的一些例子:
l 開啟乙個檔案;
l 檢視'/user/list'
網頁;
l 列印文件;
l 刪除使用者'jsmith'。
大多數資源都支援典型的crud
(建立,讀取,更新,刪除)操作,但任何對特定資源有意義的行為都是可以的。最小的許可權宣告是基於資源和行為的。
這裡最重要的認識是許可權宣告沒有誰可以執行此行為,許可宣告僅能夠反映行為(與資源型別相關的行為)。它們不反映是誰能夠執行這樣的行為。
定義使用者被允許做什麼(許可權),是一種以某種方式給使用者分配許可權的操作。這是由應用程式自己決定的,通常在不同的應用程式間變化很大。比較常見的方法有將許可權集合到乙個角色中,然後將角色與乙個或多個使用者物件相關聯。或者某些應用程式可以有一組可以被分配乙個角色的使用者組,建立的關聯意味著該組中的所有使用者都隱式地獲得了該角色的許可權。如何授予使用者許可權可以有很多變化——應用程式決定如何基於應用的要求來建模。
2 角色
角色是乙個命名的實體,通常代表一組行為或職責。這些行為演化為你在乙個應用系統中能或者不能做的事情。角色通常是分配給使用者的,因此,通過分配使用者能夠「做」的事情可以歸屬於各種角色。
在shiro
中支援兩種型別的角色:
1、 隱式角色
傳統的方式,乙個角色代表著一系列的操作,當需要對某一操作進行授權驗證時,只需判斷是否是該角色即可。行為已被乙個單獨的名字所蘊含。這種角色許可權相對簡單、模糊,不利於擴充套件。,隱式角色可能會增加許多軟體的維護和管理問題。
2、 顯式角色
乙個顯式角色本質上是乙個授權宣告的命名集合。授權驗證時,需要判斷當前角色是否擁有該許可權。這種角色許可權可以對該角色進行詳細的許可權描述,適合更複雜的許可權設計。shiro
團隊提倡使用許可權和顯式角色,而不是陳舊的隱式方法。
3 使用者
使用者實質上是指與應用程式有關的人。subject
是shiro
中「使用者」的概念。
允許使用者(subjects
)在你的應用程式中執行某些操作,是通過讓他們與角色相關聯或是直接授予許可權。你的應用程式的資料模型定義了
subject
是如何被允許做某事或不允許做某事的。
例如,在你的資料模型中,你有乙個實際的user
類,在授權時你可以直接分配許可權給
user
例項。或者,你只分配許可權給角色,然後分配角色給使用者,通過關聯,讓使用者「延伸」地擁有某個許可權。或者你用
"group"
的概念來代替這些東西。這些都隨便你——根據你自己的應用程式來定義。
你自己的資料模型定義授權究竟是如何工作的。shiro
依靠realm
來實現轉換你的資料模型,使其細節關聯到一種
shiro
能夠理解的格式。
Apache Shiro 授權概念
授權即是訪問控制,是對資源訪問管理過程。它將判斷使用者在應用程式中是否對資源有相應的訪問許可權。比如 判斷乙個使用者有檢視頁面的許可權,編輯資料的許可權,擁有某一按鈕的許可權,以及是否擁有列印的許可權等等。授權有三個核心元素 許可權,角色和使用者。1許可權 在apacheshiro中許可權是安全機制...
Apache Shiro 基於許可權授權
授權即是訪問控制,是對資源訪問的管理過程。它將判斷使用者在應用程式中是否對資源有相應的訪問許可權。但現在很多程式都使用隱式的角色進行訪問控制,定義乙個角色來代表一系列的操作。當需要對某一操作進行授權驗證時,只需判斷是否擁有該角色即可。行為已被乙個單獨的名字所蘊含。這種角色許可權相對簡單 模糊,不利於...
Apache Shiro 標籤模式授權
apache shiro 標籤方式授權 shiro提供了一套jsp標籤庫來實現頁面級的授權控制。在使用shiro標籤庫前,首先需要在jsp引入shiro標籤 taglib prefix shiro uri 下面一一介紹shiro的標籤 guest標籤 驗證當前使用者是否為 訪客 即未認證 包含未記住...