Shiro學習之Shiro授權的內部處理機制(六)

2021-08-20 19:42:15 字數 1533 閱讀 8833

1、在應用程式中呼叫授權驗證方法(subject的ispermitted*或hasrole*等)

2、sbuject的例項通常是delegatingsubject類(或子類)的例項物件,在認證開始時,會委託應用程式設定的securitymanager例項呼叫相應的ispermitted*或hasrole*方法。

3、接下來securitymanager會委託內建的authorizer的例項(預設是modularrealmauthorizer 類的例項,類似認證例項,它同樣支援乙個或多個realm例項認證)呼叫相應的授權方法。

4、每乙個realm將檢查是否實現了相同的 authorizer 介面。然後,將呼叫reaml自己的相應的授權驗證方法。

當使用多個realm時,不同於認證策略處理方式,授權處理過程中:

1、當呼叫realm出現異常時,將立即丟擲異常,結束授權驗證。

2、只要有乙個realm驗證成功,那麼將認為授權成功,立即返回,結束認證。

shiro的realm實現

在認證、授權內部實現機制中都有提到,最終處理都將交給real進行處理。因為在shiro中,最終是通過realm來獲取應用程式中的使用者、角色及許可權資訊的。通常情況下,在realm中會直接從我們的資料來源中獲取shiro需要的驗證資訊。可以說,realm是專用於安全框架的dao.

一、認證實現

正如前文所提到的,shiro的認證過程最終會交由realm執行,這時會呼叫realm的getauthenticationinfo(token)方法。

該方法主要執行以下操作:

1、檢查提交的進行認證的令牌資訊

2、根據令牌資訊從資料來源(通常為資料庫)中獲取使用者資訊

3、對使用者資訊進行匹配驗證。

4、驗證通過將返回乙個封裝了使用者資訊的authenticationinfo例項。

5、驗證失敗則丟擲authenticationexception異常資訊。

而在我們的應用程式中要做的就是自定義乙個realm類,繼承authorizingrealm抽象類,過載dogetauthenticationinfo (),重寫獲取使用者資訊的方法。

protected authenticationinfo dogetauthenticationinfo(authenticationtoken authctoken) throws authenticationexception  else   

}

二、授權實現

而授權實現則與認證實現非常相似,在我們自定義的realm中,過載dogetauthorizationinfo()方法,重寫獲取使用者許可權的方法即可。

protected authorizationinfo dogetauthorizationinfo(principalcollection principals)   

return info;

} else

}

Shiro學習筆記(四) shiro實現授權

授權,也叫訪問控制,即在應用中控制誰能訪問哪些資源 如訪問頁面 編輯資料 頁面操作等 在授權中需了解的幾個關鍵物件 主體 subject 資源 resource 許可權 permission 角色 role subject 發起請求,判斷是否具有相應的角色或許可權 securitymanager 委...

Shiro入門(六)Shiro授權

本章講解shiro授權的相關知識 1.概念 authorization 授權,也就是授予使用者訪問某些資源的許可權。前提在於需要使用者通過登入驗證才可以進行授權。許可權 permit 表示某些功能,如按鈕的顯示,選單的訪問,資料的crud 角色 role 許可權的集合,比如管理員角色,其擁有訪問系統...

Shiro實戰(三)Shiro授權(上)

在上篇shiro認證原理的最後,我們介紹了inirealm是如何進行認證,本篇我們將介紹shiro授權過程中的幾個概念以及shiro程式設計式的授權操作,並通過常用的使用者 角色 許可權授權模式來加深理解授權的過程。1 授權三大要素 permissions permissions是shiro安全框架...