Shiro学习笔记(4)——ini 配置
2015-05-29 10:04
465 查看
ini 配置文件
在前面三个笔记中也有使用到ini配置文件,但是没有进行详细的解析,本次来介绍一下如何配置。ini配置文件其实和properties配置文件一样的使用方法,都是键值对的形式(key=value),#号代表注释
ini配置中主要配置有四大类:main,users,roles,urls
[main] #提供了对根对象 securityManager 及其依赖的配置 securityManager=org.apache.shiro.mgt.DefaultSecurityManager ………… securityManager.realms=$jdbcRealm [users] #提供了对用户/密码及其角色的配置,用户名=密码,角色 1,角色 2 username=password,role1,role2 [roles] #提供了角色及权限之间关系的配置,角色=权限 1,权限 2 role1=permission1,permission2 [urls] #用于 web,提供了对 web url 拦截相关的配置,url=拦截器[参数],拦截器 /index.html = anon /admin/** = authc, roles[admin], perms["permission1"]
[main]
main主要配置shiro的一些对象,例如securityManager ,Realm,authenticator,authcStrategy 等等,下面是之前写过的一个栗子#声明一个realm MyRealm1=com.shiro.mutilrealm.MyRealm1 MyRealm2=com.shiro.mutilrealm.MyRealm2 #配置验证器 authenticator = org.apache.shiro.authc.pam.ModularRealmAuthenticator # AllSuccessfulStrategy 表示 MyRealm1和MyRealm2 认证都通过才算通过 #配置策略 #authcStrategy = org.apache.shiro.authc.pam.AllSuccessfulStrategy authcStrategy = com.shiro.authenticationstrategy.MyAuthenticationStrategy #将验证器和策略关联起来 authenticator.authenticationStrategy = $authcStrategy #配置验证器所使用的Realm authenticator.realms=$MyRealm2,$MyRealm1 #把Authenticator设置给securityManager securityManager.authenticator = $authenticator
除了对象之外,也可以使用byte数组,集合,map等等
例如:
byte数组
authenticator.bytes=0x68656c6c6f
集合
authenticator.array=1,2,3 securityManager.sessionManager.sessionListeners = $sessionListener1,$sessionListener2
map(键值对使用冒号来限定 key:value)
authenticator.map=$jdbcRealm:$jdbcRealm,1:1,key:abc
在web应用中,我们可以进行以下配置,表示如果用户没有登录进行访问时,将自动跳转到/login页面
authc.loginUrl=/login
[users]
[users]允许你配置一组静态的用户,包含用户名,密码,角色,一个用户可以有多个角色,可以配置多个用户,例如username = password, roleName1, roleName2, …, roleNameN
这里涉及到密码,就牵扯到加密的问题,我们可以MD5,Sha1,Sha256等算法进行加密
[main] #告诉shiro我们用哪个加密算法 sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher iniRealm.credentialsMatcher = $sha256Matcher [users] #用户名=密码,角色 admin=355b1bbfc96725cdce8f4a2708fda310a80e6d13315aec4e5eed2a75fe8032ce,role1
获取密码的 hex 加密字符串
String ss = new Sha256Hash("cc").toHex();
[roles]
[roles]将角色和权限关联起来,格式为:角色名=权限字符串1,权限字符串2…..,例如role1 = printer:print,printer:query
关于权限字符串的语法,请参考Shiro学习笔记(1)——shiro入门 的权限部分内容
[urls]
这部分配置主要在web应用中,格式为:url=拦截器[参数],拦截器[参数]……,例如/login=anon /unauthorized=anon /static/**=anon /authenticated=authc /role=authc,roles[admin] /permission=authc,perms["user:create"]
解析
anon表示匿名访问,即不需要登录就可以访问,例如/login这个路径可以匿名访问
authe表示需要登录才能访问
roles[admin]表示有admin这个角色的用户才能访问
perms[“user:create”]表示有这个权限的才能访问
url通配符
?:匹配一个字符
*:匹配零个或多个字符
**:匹配零个或多个路径
url匹配顺序是按照你配置的顺序
相关文章推荐
- cygwin安装
- TFS扩展开发中遇到的坑
- jquery倒计时插件用法
- C++学习 Boost状态机说明statechart
- ModelMap和ModelAndView的区别
- hdu1541 Stars
- ABAP性能优化之向内表添加纪录
- springMVC中文乱码问题
- C++读取系统当前时间
- javaScript判断鼠标滚轮的上下滚动
- oracle游标用法
- 【vim】简介与基本配置
- C++读取系统当前时间 分类: C/C++ 2015-05-29 10:03 47人阅读 评论(0) 收藏
- 10 程序员必备:Linux日常维护命令
- Netty那点事(四)Netty与Reactor模式
- demopu告诉你nginx+php 出现404错误解决方法
- 社説 20150529 対「イスラム国」 国際包囲網の強化が急務だ
- 社説 20150529 五輪専任相 新国立競技場への不信を拭え
- 仿猎豹垃圾清理(实现原理+源码)
- 职场情商“知多少”?