天天看點

shiro(2)-架構與配置

認證就是使用者确認身份的過程,确認登入的使用者身份能夠操作的内容。

使用shiro認證分為以下幾個步驟:

1,得到主體的認證和憑據。

2,送出認證和憑據給身份驗證系統。

3,判斷是否允許通路,重試認證或者阻止通路。

其中Remember Me的功能包括兩個方法,一個是

也可以使用字元串的方式驗證

shiro(2)-架構與配置

應用程式調用subject(主題),主題可以是一個使用者也可以是與系統互動的另一個系統,主題綁定shiro的權限管理,SecurityManager(安全管理),它控制與有與主題相關的安全操作。Realm(橋梁)它是安全與資料之間的橋,它封裝了比如DAO的配置資訊,可以指定連接配接的資料源,也可使用其它的認證方式,如LDAP等。

然後看一下詳細的架構圖:

shiro(2)-架構與配置

Subject (org.apache.shiro.subject.Subject)

主題:與系統互動的第三方如(使用者,cron服務,第三方應用)等。

SecurityManager (org.apache.shiro.mgt.SecurityManager)

shiro系統的核心,協調主題使用的操作,驗證,配置等。

Authenticator (org.apache.shiro.authc.Authenticator)

身份驗證元件,對企圖登入系統的使用者進行身份的驗證。其中包含一個Authentication Strategy

 (org.apache.shiro.authc.pam.AuthenticationStrategy)元件。配置驗證成功與失敗的條件。

Authorizer (org.apache.shiro.authz.Authorizer)

授權元件,指使用者通路特定應用程式的機制。

SessionManager (org.apache.shiro.session.mgt.SessionManager)

管理會話如何建立生命周期。其中包括的sessiondao是管理會議資料的持久操作:SessionDAO (org.apache.shiro.session.mgt.eis.SessionDAO),代表執行sessionManager的CRUD操作。

CacheManager (org.apache.shiro.cache.CacheManager)

緩存管理子產品。

Cryptography (org.apache.shiro.crypto.*)

加密子產品。

Realms (org.apache.shiro.realm.Realm)

多種方式處理的橋梁。

多種配置方式:

與spring,jboss,guice等進行配置。

1,程式設計方式配置

例如:

2,sessionManager對象圖

如果你想使用sessionManager配置自定義的sessionDao資訊,進行自定義會話管理

3,INI配置

1) 建立一個INI從SecurityManager

可以從多種方式讀取INI配置檔案的資訊,如檔案系統,類路徑等

2) 通過Ini執行個體讀取

類似于Properties的方式

加載之後就可以操作INI的配置了。

4,INI配置

每一個節點都是單獨的,不可以重複,注釋可以使用#或者;

配置示例

1) [main]

配置sessionManager的執行個體和它的依賴。

定義一個對象

簡單的屬性設定

配置資訊将轉入到對應的set方法中

參考值

你可以使用$符号引用先前定義的一個對象的執行個體

嵌套屬性

将被注入到下面的程式中

引用其它的屬性

以鍵值的配置方式

2) [users]

在使用者比較少的情況下這種配置資訊是有效的

3) [roles]

如果角色資訊比較少的情況下可以使用這項配置

4) [urls]

配置url等可通路的資源資訊。