Shiro权限管理的过滤器解释

96
没事遛弯
2018.07.25 14:07* 字数 37

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         

shiro