SpringBoot:集成Shiro之INI配置篇(转载)

SpringBoot:集成Shiro之INI配置篇(转载)_第1张图片

前言


在SpringBoot:集成Shiro之INI认证篇和SpringBoot:集成Shiro之INI授权篇 两篇需要使用到INI文件,这一篇文章是用来简单阐述以下INI的的编写格式以及组成模块.(大部分是转载内容,只是加以整理而已.)

#用户
[users]
root=123456,role1
admin=admin,role1,role2
#角色和权限
[roles]
role1 = permission1
role2 = permission2,permission3


Shiro中INI的构成


在Shiro中的INI主要是由四个部分组成,分别是main,users,roles,urls.下面我就分别来说明各个模块的使用以及作用.


[main] 模块 (Shiro功能配置)


(骚栋用这个模块使用的次数不多,直接从网上CV了~见谅)
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=0x68656c6c6f69

集合

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:create,printer:query

权限标识符号规则:【中间用“:”(半角冒号分隔)】

权限标识符号详情
资源:操作【user:create:表示对用户资源进行create操作】【等价于:user:create:*(对所有的用户实例进行操作
资源:操作:实例【user:create:01:表示对用户资源的01实例进行create操作】
例子:【user:*:01 表示对用户资源的01实例进行所有操作】

所有权限标识符规则:【使用 * 号来表示所有权限标识符】

所有权限标识符号详情
通配符:user:edit:、user::、user::manager 等价:user:edit==user:edit:、user == user::* 只能从字符串结尾处省略。


[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匹配顺序是按照你配置的顺序,所以匹配顺序一定要正确,否则就有可能会造成访问失败.


结语


前面全部是转载内容,网上的相关很多,这是只是稍作整理.方便日后查看.欢迎关注骚栋.如果有任何问题欢迎评论区留言,谢谢大家了.最后附上原文链接.尊重作者.

原文链接


SpringBoot:集成Shiro之INI配置篇(转载)_第2张图片

你可能感兴趣的:(SpringBoot:集成Shiro之INI配置篇(转载))