1. 程式人生 > >Shiro登入機制驗證,自定義FormAuthenticationFilter

Shiro登入機制驗證,自定義FormAuthenticationFilter

自定義登入form攔截器:org.apache.shiro.web.filter.authc.FormAuthenticationFilter

問題描述

使用shiro進行系統身份驗證-許可權控制,登入介面進行登入操作何時觸發

問題分析

探知login.jsp的form與shiro form filter的識別認證規則需要檢視org.apache.shiro.web.filter.authc.FormAuthenticationFilter中的原始碼。

第一、輸入控制元件name命名:


在此可知,登入表單的使用者名稱、密碼等輸入控制元件的name預設值。

第二、表單action與login.jsp的訪問地址規則:

shiro過濾器的配置:




文字選中方法:boolean org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(ServletRequest request, ServletResponse response) throws Exception  該方法在

org.apache.shiro.web.filter.authc.AuthenticatingFilter中有具體實現:
當登入表單需要擴充套件時,需要在擴充套件類裡重新實現此方法,比如,登入時增加驗證碼,實現如下:
本文重點探究該方法何時被正確出發?
1. 判斷當前URL是否為登入地址:
shiroFilter的loginUrl值。 2. 如果當前請求URL為登入地址時,判斷是否為form提交。 在此兩點可以總結出登入表單及登入介面URL的規則,即: get loginUrl:進入登入介面 post loginUrl:提交登入表單 username:表單使用者名稱 password:表單密碼

探究結論

           shiroFilter配置的loginUrl的GET請求進入登入介面,POST請求為提交登入表單。觸發