Shiro权限管理的过滤器解释
2018-07-25 本文已影响0人
没事遛弯
filterChainDefinitions
参数说明,注意其验证顺序是自上而下
默认过滤器( 10个
)
1. anon -- org.apache.shiro.web.filter.authc.AnonymousFilter
2. authc -- org.apache.shiro.web.filter.authc.FormAuthenticationFilter
3. authcBasic -- org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
4. perms -- org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
5. port -- org.apache.shiro.web.filter.authz.PortFilter
6. rest -- org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
7. roles -- org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
8. ssl -- org.apache.shiro.web.filter.authz.SslFilter
9. user -- org.apache.shiro.web.filter.authc.UserFilter
10 logout -- org.apache.shiro.web.filter.authc.LogoutFilter
anon:例子/admins/**=anon #没有参数,表示可以匿名使用。
authc:例如/admins/user/**=authc #表示需要认证(登录)才能使用,没有参数
roles:例子/admins/user/**=roles[admin], #参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"], 每个参数通过才算通过,相当于hasAllRoles()方法。
perms:例子/admins/user/**=perms[user:add:*], #参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
rest:例子/admins/user/**=rest[user], #根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为 post,get,delete等。
port:例子/admins/user/**=port[8081], #当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。
authcBasic:例如/admins/user/**=authcBasic #没有参数表示httpBasic认证
ssl:例子/admins/user/**=ssl #没有参数,表示安全的url请求,协议为https
user:例如/admins/user/**=user #没有参数表示必须存在用户,当登入操作时不做检查
- 如果出现下面的这种过滤情况
/account/** = ssl, authc
/account/signup = anon
则下面的默认永远都不执行,即访问/account/signup/index.html 的时候,只执行上面的过滤器,不执行下面的。
<!-- anon表示不校验 -->
/bower_components/** = anon #注意一个星号和两个星号的区别
/info/home/Vh1/**=anon
/=anon
/static/**=anon #静态资源放行
<!-- 剩余请求均经过authc -->
/** = authc