Shiro學習 五 Web整合

2021-10-12 21:22:13 字數 2186 閱讀 1867

一、簡介

shiro與web整合,主要是通過配置乙個shirofilter攔截所有url,其中shirofilter類似於如struct2/springmvc這種web框架的前端控制器,是所有請求的入口點,負責根據配置(如ini配置檔案),判斷請求進入url是否需要登入/許可權等工作。

請求會經過shirofilter過濾,shirofilter會去載入ini檔案進行認證和許可權校驗。如果沒有相應的,那麼就返回對應的提示。

其中對請求進行以特定規則攔截最重要的就是配置***

二、***

我們通過上面的**可以輕鬆的分別每一種***的優先順序,這樣假設某個資源訪問同時設定了兩個或者多個***,我們可以清楚的知道***的執行順序,從而方便我們進行一些操作.

更加具體的***執行順序圖例:

如上,我們在ini檔案中配置了乙個[urls],在裡面,我們定製了請求路徑對應會應用哪些***,如:

其中上面的[main]模組的講解:

authc.loginurl表達的含義是,登入認證跳轉到的urlroles.unauthorizedurl使用者沒有包含頁面請求路徑所需要的角色,那麼就會跳轉到的頁面。

perms.unauthorizedurl使用者沒有包含頁面請求路徑所需要擁有對某個資源的操作許可權時,那麼就會跳轉到的頁面。

logout.redirecturl登出之後,重定向的頁面。

shiro所有過濾器的操作都會按照過濾規則依次的進行執行!

三、authc登入***的工作原理

有兩個作用

登入認證

請求進來時,攔截判斷當前使用者是否登入了,如果已經登入了就放行,如果沒有登入,跳轉到authc.loginurl屬性配置的路徑,注意:預設是/login.jsp

執行登入認證

請求進來時,如果請求的路徑為authc.loginurl屬性配置的路徑(沒配置,預設是/login.jsp)時如果當前使用者沒有登入,authc這個***會嘗試獲取請求中的賬號和密碼,然後比對ini配置檔案或者realm中的使用者列表,如果對比正確,直接執行登入操作,否之,丟擲異常,跳轉到authc.loginurl指定的路徑

注意請求中的賬號和密碼的name必須固定為username和password,如果要改動必須額外指定。

authc.usernameparam=*** 

authc.passwordparam=***

authc登入成功後的處理操作

authc登入失敗後的處理操作

登入失敗將會跳轉到authc.loginurl指定的路徑,然後執行裡面的方法。並將異常資訊返回到指定的頁面。如下:

其中shirologinfailure存放著異常的名字

Shiro整合Google Kaptcha驗證碼

kaptcha 是乙個可高度配置的實用驗證碼生成工具。constant描述預設值 kaptcha.border yeskaptcha.border.color 邊框顏色,合法值 r,g,b and optional alpha 或者 white,black,blue.black kaptcha.bo...

跟我學Shiro 無狀態 Web 應用整合

在一些環境中,可能需要把 web 應用做成無狀態的,即伺服器端無狀態,就是說伺服器端不會儲存像會話這種東西,而是每次請求時帶上相應的使用者名稱進行登入。如一些 rest 風格的 api,如果不使用 oauth2 協議,就可以使用如 rest hmac 認證進行訪問。hmac hash based m...

shiro學習筆記(5) spring整合

spring整合shiro 1 1 jar org.apache.shiro shiro spring 1.2.3 2 web.xml contextconfiglocation classpath spring shiro.xml org.springframework.web.context.c...