Shiro內建過濾器

2021-08-20 05:22:36 字數 1674 閱讀 4168

執行 web 應用時,shiro會建立一些有用的預設 filter 例項,並自動地在 [main] 項中將它們置為可用

這些可用的預設的 filter 例項是被 defaultfilter 列舉類定義的(列舉的名稱字段就是可供配置的名稱)

這些過濾器分為兩組:

u  認證過濾器:anon(不認證也可以訪問),authcbasic,authc(必須認證後才可

訪問),user

u  授權過濾器:perms(指定資源需要哪些許可權才可以訪問),roles, ssl,rest, port

注意 user 和 authc 不同

當應用開啟了rememberme時,使用者下次訪問時可以是乙個user,但絕不會是authc,因為authc是需要重新認證的

user表示使用者不一定已通過認證,只要曾被shiro記住過登入狀態的使用者就可以正常發起請求,比如rememberme

說白了:以前的乙個使用者登入時開啟了rememberme,然後他關閉瀏覽器,下次再訪問時他就是乙個user,而不會authc

下面舉幾個例子介紹一下(注意urlpattern寫的是兩顆星,這樣才能實現任意層次的全匹配)

/admin/**=anon:無參,表示可匿名訪問

/admin/user/**=authc:無參,表示需要認證才能訪問

/admin/user/**=authcbasic:無參,表示需要httpbasic認證才能訪問

/admin/user/**=ssl:無參,表示需要安全的url請求,協議為https

/home=user:表示使用者不一定需要通過認證,只要曾被 shiro 記住過登入狀態就可以正常發起 /home 請求

/edit=authc,perms[admin:edit]:表示使用者必需已通過認證,並擁有 admin:edit 許可權才可以正常發起 /edit 請求

/admin=authc,roles[admin]:表示使用者必需已通過認證,並擁有 admin 角色才可以正常發起 /admin 請求

/admin/user/**=port[8081]:當請求的url埠不是8081時,跳轉到schemal://servername:8081?querystring

/admin/user/**=rest[user]:根據請求方式來識別,相當於/admins/user/**=perms[user:get]或perms[user:post]等等

/admin**=roles["admin,guest"]:允許多個引數(逗號分隔),此時要全部通過才算通過,相當於hasallroles()

/admin**=perms["user:add:*,user:del:*"]:允許多個引數(逗號分隔),此時要全部通過才算通過,相當於ispermitedall()

shiro內建過濾器

rest 例子 admins user rest user 根據請求的方法,相當於 admins user perms user method 其中method為post,get,delete等。port 例子 admins user port 8081 當請求的url的埠不是8081是跳轉到sch...

Shiro內建過濾器

filter name class description anon org.apache.shiro.web.filter.authc.anonymousfilter 匿名 即不需要登入即可訪問 一般用於靜態資源過濾 示例 static anon authc org.apache.shiro.we...

shiro內建過濾器研究

rest 例子 admins user rest user 根據請求的方法,相當於 admins user perms user method 其中method為post,get,delete等。port 例子 admins user port 8081 當請求的url的埠不是8081是跳轉到sch...