Shiro配置文件ini詳解

我不是語言的開發者,我只是它的搬運工。每進步一點,5年之後你也是個人物

為什麼看網上的例子都喜歡用ini格式文件,為什麼不用.propertes或xml。

我們來看看一個ini格式文件text.ini:


  1. [main]
  2. activeDirectoryRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
  3. activeDirectoryRealm.systemUsername = uid=admin,ou=system
  4. activeDirectoryRealm.systemPassword = secret
  5. activeDirectoryRealm.searchBase = o=sevenSeas,ou=people
  6. activeDirectoryRealm.url = ldap://localhost:10389
  7. [users]
  8. name=cy
  9. pwd=123

看了源碼才知道,原來shiro框架裡新造了一個Ini類,當我們傳入資源時,Ini裡使用流一行一行的讀資源,當遇到”#”或”;”開頭的則直接跳過;

遇到“[*]”則將中括號裡的字符串看過Section(區塊)的key,後面一行一行都視做該區域的內容直到遇到新的中括號。隨後再解讀區域下面多行字符串(至少一行),如果遇到“:”或“=”或“”,則前面當做key,後面的則是為value(同時會過濾掉value裡前後空格以及“=”前後空格),存到一個Section裡,最後把所有行解析完後放到名為sections的HashMap裡。

IniSecurityManagerFacotry繼承自IniFactorySupport,而IniFactorySupport有個setIni()方法將解析出來的Ini結構數據保存到該類裡,其它什麼都不做。

1.[users]部分

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

username=password,role1,role2

例如:

配置用戶名/密碼及其角色,格式:“用戶名=密碼,角色1,角色2”,角色部分可省略。如:

[users]

zhang=123,role1,role2

wang=123

2. [roles]

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

role1=permission1,permission2

例如:

配置角色及權限之間的關係,格式:“角色=權限1,權限2”;如:

[roles]

role1=user:create,user:update

role2=*

如果只有角色沒有對應的權限,可以不配roles

3. [main]部分

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

創建對象

securityManager=org.apache.shiro.mgt.DefaultSecurityManager

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

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

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

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

4.[urls]

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

/index.html = anon

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


分享到:


相關文章: