Apache Shiro INI配置文件詳細介紹

Shiro InI 概念

使用過如 Spring 之類的 IOC、DI 容器就知道,Shiro 提供的 INI 配置也是非常類似的,即可以理解為容器,但是區別在於它從一個根對象 SecurityManager開始。

Apache Shiro INI配置文件詳細介紹

Shiro 是從根對象 SecurityManager 進行身份驗證和授權的,這個對象是線程安全且整個應用只需要一個即可,因此 Shiro 提供了 SecurityUtils 綁定它為全局的,方便後續操作。

Shiro 的類都是 POJO 的,因此都很容易放到任何 IOC 容器管理,Shiro 支持依賴注入:public 空參構造器對象的創建、setter 依賴注入。

shiro.ini配置文件等同於java代碼:

配置文件方式:

authenticator=org.apache.shiro.authc.pam.ModularRealmAuthenticator

securityManager.authenticator=$authenticator

jdbcRealm=com.shiro.test.JdbcRealm

securityManager.realms=$jdbcRealm

Java代碼方式

ModularRealmAuthenticator authenticator =new ModularRealmAuthenticator();

securityManager.setAuthenticator(authenticator);

JdbcRealm jdbcRealm =new JdbcRealm();

securityManager.setRealms(jdbcRealm );

對象名 = 全限定類名,相對於調用 public 無參構造器創建對象。

對象名. 屬性名 = 值,相當於調用 setter 方法設置常量值。

對象名. 屬性名 =$對象引用,相當於調用 setter 方法設置對象引用。

INI 文件內容

ini 配置文件類似於 Java 中的 properties中的鍵-值對(key=value),不過提供了將 key-value 分類的特性,key 是每個部分不重複即可,而不是整個配置文件。格式如下:

[main]

\#提供了對根對象securityManager及其依賴的配置

\#其構造器必須是 public 空參構造器,通過反射創建相應的實例。

securityManager=org.apache.shiro.mgt.DefaultSecurityManager

jdbcRealm=com.shiro.test.JdbcRealm

securityManager.realms=$jdbcRealm

[users]

\#提供了對用戶、密碼及其角色的配置,用戶名=密碼,角色1,角色2

username=password,role1,role2

[roles]

\#提供了角色及權限之間關係的配置,角色=權限1,權限2

role1=permission1,permission2

[urls]

\#用於web,提供了對web url攔截相關的配置,url=攔截器[參數],攔截器

/index.jsp= anon

/static/** = authc, roles[admin], perms["permission1"]

INI 文件加載

通過IniSecurityManagerFactory工廠加載並創建SecurityManager實例,代碼如下。

Apache Shiro INI配置文件詳細介紹


分享到:


相關文章: