導航:首頁 > 凈水問答 > 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許可權過濾過濾器定義相關的資料

熱點內容
反滲透膜加壓泵 瀏覽:818
ro膜凈水機安裝教程 瀏覽:140
如何做好污水處理廠運行監管工作 瀏覽:22
60草缸用多大過濾器 瀏覽:91
廣西凈水器代理多少錢 瀏覽:580
郴州有什麼污水 瀏覽:281
環氧樹脂管配比 瀏覽:420
污水處理膜池泥少怎麼處理 瀏覽:750
污水處理顯微鏡多少倍 瀏覽:937
cep凈化器質量怎麼樣 瀏覽:455
從武漢回哈爾濱用隔離么 瀏覽:71
純水機數值是多少 瀏覽:578
當今超濾膜技術的應用 瀏覽:956
雷凌雙擎空氣濾芯用什麼牌子 瀏覽:943
直立式飲水機怎麼樣 瀏覽:779
污水處理廠招工由什麼部門管 瀏覽:993
樹脂材料掉了對牙齒有影響嗎 瀏覽:294
高級樹脂發梳價格 瀏覽:702
悅動4s店更換汽油濾芯多少錢 瀏覽:326
反滲透制純水環評報告 瀏覽:449