Shiro登入機制驗證,自定義FormAuthenticationFilter
阿新 • • 發佈:2019-01-05
自定義登入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中有具體實現:當登入表單需要擴充套件時,需要在擴充套件類裡重新實現此方法,比如,登入時增加驗證碼,實現如下:
本文重點探究該方法何時被正確出發?
shiroFilter的loginUrl值。 2. 如果當前請求URL為登入地址時,判斷是否為form提交。 在此兩點可以總結出登入表單及登入介面URL的規則,即: get loginUrl:進入登入介面 post loginUrl:提交登入表單 username:表單使用者名稱 password:表單密碼