一、shiro內置過濾器:
Shiro內置了很多默認的過濾器,比如:身份驗證、授權等,默認過濾器可以參考“DefaultFilter”中的枚舉過濾器:
package org.apache.shiro.web.filter.mgt; public enum DefaultFilter { anon(AnonymousFilter.class), authc(FormAuthenticationFilter.class), authcBasic(BasicHttpAuthenticationFilter.class), logout(LogoutFilter.class), noSessionCreation(NoSessionCreationFilter.class), perms(PermissionsAuthorizationFilter.class), port(PortFilter.class), rest(HttpMethodPermissionFilter.class), roles(RolesAuthorizationFilter.class), ssl(SslFilter.class), user(UserFilter.class); }
1. 身份驗證相關:
*******************************身份驗證******************************************************** 1.authc: -->org.apache.shiro.web.filter.authc.FormAuthenticationFilter 屬於表單的過濾器,如"/**=authc",如果沒有登錄會跳到相應的登錄頁面登錄: 主要屬性: usernameParam:表單提交的用戶名參數名(username) passwordParam:表單提交的密碼參數名(password) rememberMeParam:表單提交的密碼參數名(rememberMe) loginUrl:登錄頁面地址(/login.jsp) successUrl:登錄成功后的默認重定向地址 failureKeyAttribute:登錄失敗后錯誤信息存儲key(shiroLoginFailure) 2.authcBasic: -->org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter BaseHTTP身份驗證過濾器,主要屬性: applicationName:彈出框顯示的信息(aoolication) 3.logout: -->org.apache.shiro.web.filter.authc.LogoutFilter 退出過濾器,主要屬性: redirectUrl:退出成功后重定向的地址(/) 4.user: -->org.apache.shiro.web.filter.authc.UserFilter 用戶過濾器,用戶已經身份驗證/記住我都可以,示例:"/**=user" 5.anon: -->org.apache.shiro.web.filter.authc.AnonymousFilter 匿名過濾器,即不需要登錄也可以訪問;一般用於靜態資源過濾,示例:"/static/**=anon"
2.授權相關:
**********************************授權***************************************************** 1.roles: -->org.apache.shiro.web.filter.authz.RolesAuthorizationFilter 角色授權過濾器,驗證用戶是否擁有角色: 主要屬性: loginUrl:登錄頁面地址(/login.jsp) unauthorizedUrl:未授權重定向地址;示例:"/admin/**=roles[admin]" 2.perms: -->org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter 授權過濾器,驗證用戶是否擁有權限,屬性和Roles一樣;示例:"/user/**=parms["user:create"]" 3.port: -->org.apache.shiro.web.filter.authz.PortFilter 端口過濾器,主要屬性port(80),表示可以通過的端口;示例:"/test=port[80]",如果用戶訪問的頁面是非80,會自動將端口改為80端口,其他路徑參數都一樣 4.rest: -->org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter reset風格過濾器,會自動根據請求方法構建權限字符串 5.ssl: -->org.apache.shiro.web.filter.authz.SslFilter SSL過濾器,只有請求協議是https才能通過;否則會自動跳轉到https端口(443);其他和port過濾器一樣
3. 其他:
***********************************Session**************************************************** 1.noSessionCreation: -->org.apache.shiro.web.filter.session.NoSessionCreationFilter 不創建會話過濾器,調用subject.getSession(false)不會由什么問題,但是如果subject.getSession(true)將拋出異常
二、自定義過濾器:
通過自定義過濾器可以擴展功能,
例如:動態url-叫哦/權限訪問控制的實現,根據Subject身份信息獲取用戶信息綁定到Request(即設置通用數據)、驗證碼驗證、在線用戶信息保存等。