filterChainDefinitions
参数说明,注意其验证顺序是自上而下
默认过滤器( 10个
)
anon -- org.apache.shiro.web.filter.authc.AnonymousFilter authc -- org.apache.shiro.web.filter.authc.FormAuthenticationFilter authcBasic -- org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter perms -- org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter port -- org.apache.shiro.web.filter.authz.PortFilter rest -- org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter roles -- org.apache.shiro.web.filter.authz.RolesAuthorizationFilter ssl -- org.apache.shiro.web.filter.authz.SslFilter user -- org.apache.shiro.web.filter.authc.UserFilter 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