1.用戶訪問服務器
2.過濾器過濾所有訪問的資源,判斷用戶是否認證 目標位置在這里是登錄驗證的controller
用戶登錄沒有認證會跳轉到這個方法,此方法只判斷錯誤信息,如果錯誤,會把mv打回到登錄頁面並顯示消息;如果是正確信息,默認會調用過濾器中的回到上一個請求的頁面,也就是訪問網站的index頁面。
3.首次登錄沒有session,沒有認證,跳轉到login頁面
前端
后台 login.jsp 必須這樣寫:
原因:之前配置了過濾器,表單過濾器默認了參數名,不能隨意更改,包括上面的異常信息的名字shiroLoginFailure
4。用戶填寫表單信息,點擊提交,后台進行數據認證
4.1后台會調用shrio提供的抽象類AuthorizingRealm,通過繼承,編寫我們自己的認證方法,它提供了兩個重寫方法doGetAuthenticationInfo用戶認證和doGetAuthorizationInfo用戶授權,現在先理解用戶認證。
4.2登錄失敗 顯示密碼錯誤
流程:通過調用上面的myRealm的驗證,會將錯誤消息存放到request域中,參數名為shiroLoginFailure,通過判斷該參數,controller知道該怎么處理錯誤信息。
4.3登錄成功,系統默認跳轉到上一次請求的頁面,因為如果從login.jsp頁面直接跳轉到index.jsp頁面是拿不到我們存放的,想要展示的數據,所以需要一個重定向來請求controller來獲取數據到主頁面
前台:
后台:
用戶點擊提交login.jsp
后台判斷正確后,跳轉到index頁面,取不到數據,所以重定向
請求到controller,controller准備數據,將數據打到主頁面上。重點是controller怎么取到數據。
first代表first.jsp頁面,使用了resful風格
5.退出,好像這個是有session的,不退出之后不需要登錄就可以進來了
退出不需要我們編寫代碼,只需要過濾器過濾就行了,在過濾器配置