Shiro学习笔记(4)——ini 配置

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匹配顺序是按照你配置的顺序

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值