filterChainDefinitions參數(shù)說明,注意其驗證順序是自上而下默認過濾器( 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 #沒有參數(shù),表示可以匿名使用。
authc:例如/admins/user/**=authc #表示需要認證(登錄)才能使用,沒有參數(shù)
roles:例子/admins/user/**=roles[admin], #參數(shù)可以寫多個,多個時必須加上引號,并且參數(shù)之間用逗號分割,當有多個參數(shù)時,例如admins/user/**=roles["admin,guest"], 每個參數(shù)通過才算通過,相當于hasAllRoles()方法。
perms:例子/admins/user/**=perms[user:add:*], #參數(shù)可以寫多個,多個時必須加上引號,并且參數(shù)之間用逗號分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],當有多個參數(shù)時必須每個參數(shù)都通過才通過,想當于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是協(xié)議http或https等,serverName是你訪問的host,8081是url配置里port的端口,queryString是你訪問的url里的?后面的參數(shù)。
authcBasic:例如/admins/user/**=authcBasic #沒有參數(shù)表示httpBasic認證
ssl:例子/admins/user/**=ssl #沒有參數(shù),表示安全的url請求,協(xié)議為https
user:例如/admins/user/**=user #沒有參數(shù)表示必須存在用戶,當?shù)侨氩僮鲿r不做檢查
- 如果出現(xiàn)下面的這種過濾情況
/account/** = ssl, authc
/account/signup = anon
則下面的默認永遠都不執(zhí)行,即訪問/account/signup/index.html 的時候,只執(zhí)行上面的過濾器,不執(zhí)行下面的。
<!-- anon表示不校驗 -->
/bower_components/** = anon #注意一個星號和兩個星號的區(qū)別
/info/home/Vh1/**=anon
/=anon
/static/**=anon #靜態(tài)資源放行
<!-- 剩余請求均經過authc -->
/** = authc