導航:首頁 > 凈水問答 > shiro許可權過濾過濾器定義

shiro許可權過濾過濾器定義

發布時間:2025-07-20 10:09:09

1. shiro過濾器/* = authc把自己寫的都攔截了,走了上面的攔截器後還是會被/*攔截

我也碰到這種情來況了,,自,發現filters.put("authc", filter_Authc());這種方式注入filter的時候,攔截順序會失效,,,要改成new xx()這種方式才可以filters.put("authc", new Filter_Authc());

2. Shiro中的filter

DefaultFilter

shiro中提供的默認filter

FilterChainManager

通過配置創建對應的filterChain

Shiro通過此配置可初始化FilterChainManager中的filterChain,結構為 url ->filter列表

SpringShiroFilter

入口filter,攔截所有請求,通過請求的url匹配到對應的filterChain,然後通過Chain對請求進行,認證或者授權的處理

OncePerRequestFilter

OncePerRequestFilter 用於防止多次執行 Filter;也就是說一次請求只會走一次攔截器鏈;

另外提供 enabled 屬性,表示是否開啟該攔截器實例

實現了 doFilter 方法,提供了抽象方法 doFilterInternal

在doFilter中驗證當前的Filter有沒有執行過,如果已經執行過一次或者當前filter被禁用,則直接執行下一個Filter。如果沒有執行過則執行 doFilterInternal 方法

AbstractShiroFilter

創建Subject,綁定subject到當前線程,根據url獲取filterChain並執行filterChain

通過請求的url來匹配FilterChainManager中的FilterChain,這個方法會返回一個 ProxiedFilterChain

ProxiedFilterChain

存儲了tomcat的Filter 和shiro內部的filter

shiro內部的過濾器執行完後會切換到tomcat的過濾器繼續執行

默認filter

除了LogoutFilter,其他都繼承了AdviceFilter

AdviceFilter

AdviceFilter 提供了 AOP 風格的支持,類似於 SpringMVC 中的 Interceptor:

許可權驗證在preHandle中實現

PathMatchingFilter

PathMatchingFilter 提供了基於 Ant 風格的請求路徑匹配功能及攔截器參數解析的功能,如

/admin roles[admin,user] 」自動根據 「,」 分割,解析成 /admin -> [admin,user] 存入 appliedPaths

實現了 preHandle 方法,通過請求的url匹配url對應的許可權,解析許可權串 調用子類的 onPreHandle 對許可權進行處理

AnonymousFilter

提供匿名訪問功能,實現了 onPreHandle 直接返回true,所以配置 anon 的url任何人都可以訪問

AccessControlFilter

提供了資源訪問控制的基礎功能

實現了 onPreHandle ,這里拆分出了

isAccessAllowed (是否允許訪問)和 onAccessDenied (訪問被拒絕時)這兩個方法供子類實現

AuthenticationFilter

實現了 isAccessAllowed 方法,驗證用戶是否已經登錄,沒有登錄將被拒絕

FormAuthenticationFilter

繼承自 AuthenticationFilter 只有用戶登錄過後才能通過

實現了 onAccessDenied 方法,如果請求的地址是登錄地址,這里會嘗試自動登錄,否則跳轉到登錄頁面

BasicHttpAuthenticationFilter

提供了基於 HttpBasic認證的方式

AuthorizationFilter

實現了 onAccessDenied 方法,如果沒有認證通過,則跳轉到登錄或者認證失敗的頁面

對用戶所訪問資源的許可權進行認證

HttpMethodPermissionFilter

將HTTP請求的方法(例如GET、POST等)轉換為相應的動作並構造一個相應的許可權

如get 被轉換為 read,put 轉換為 update,post轉換為create等

許可權配置:/users perms[users]

請求: get /users

將會驗證 用戶是否擁有users:read許可權

RolesAuthorizationFilter

驗證用戶是否用對對應的角色

UserFilter

實現了 isAccessAllowed onAccessDenied 方法,驗證用戶是否登錄過,如果驗證未通過則跳轉到登錄頁面

3. springMvc+shiro做許可權管理,頁面上的靜態資源,樣式圖片等沒有出現,用幾種方式過濾試過,還是不行

正常情況是不會出現這樣的,shiro對於靜態資源的處理,不用特殊配置。

只需要在shiroFilter過濾器filterChainDefinitions項中增加一個靜態資源處理規則就可以,例如允許/css/開頭的資源匿名訪問,只需要這樣一句配置就足矣。

/css/** = anon

配置完成後,未登錄就可以在瀏覽器中直接訪問css下的資源,新項目用的shiro,簡單而又實用的許可權框架。

閱讀全文

與shiro許可權過濾過濾器定義相關的資料

熱點內容
納濾氯離子 瀏覽:47
學校門口有污水怎麼處理 瀏覽:369
成都污水凈化臭氧機多少錢一台 瀏覽:620
蒸餾時裝置必須與大氣相通 瀏覽:534
鍋爐除垢劑可以用蠟 瀏覽:83
樹脂吊墜一般多少錢 瀏覽:341
檸檬除垢劑使用注意事項 瀏覽:729
農村污水處理站及管網工程可研 瀏覽:170
國產超濾飲水機 瀏覽:406
腌制辣椒的廢水怎麼處理 瀏覽:753
污水1噸水消耗多少電量 瀏覽:569
奧得奧空氣凈化器怎麼用 瀏覽:885
喝紅酒為什麼加純水 瀏覽:162
吉林污水設備費用是多少 瀏覽:500
深基坑雨污水如何防護 瀏覽:97
523li燃油濾芯在什麼位置 瀏覽:814
污水井蓋為什麼有很多洞 瀏覽:413
污水治理有哪些名詞 瀏覽:811
耐高溫乙烯基樹脂供應商 瀏覽:701
污水處理中DMF系統 瀏覽:455