Shiro-過濾器


一、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(即設置通用數據)、驗證碼驗證、在線用戶信息保存等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM