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"]


分享到:


相關文章: