在使用shiro的時候遇到乙個比較操蛋的問題,就是使用者登陸之後一直後退,會後退到登陸介面,如果使用者這個時候再輸入使用者名稱和密碼進行登陸的時候shiro就會報乙個錯誤。
具體原因是再執行登陸的時候會呼叫org.apache.shiro.web.filter.accesscontrolfilter類裡面的onprehandle方法。
[img]
重點在這裡,如果isaccessallowed方法返回true,則不會再呼叫onaccessdenied方法,如果isaccessallowed方法返回flase,則會繼續呼叫onaccessdenied方法。而onaccessdenied方法裡面則是具體執行登陸的地方。
而在這個方法裡面會呼叫isaccessallowed方法,並返回乙個boolean型別,這個方法是在其子類org.apache.shiro.web.filter.authc.authenticationfilter中來實現的,主要判斷當前使用者是否已經認證,如果已認證返回true,否則返回flase,由於我們已經登陸,所以此方法就會返回true,所以上面的onprehandle方法裡面的onaccessdenied方法就不會被執行。
知道了原因我們就知道該怎麼解決了,我的辦法當然是重寫isaccessallowed方法
如果是登陸並且是進行提交則返回false,讓其可以繼續執行登陸。
在沒有x的情況下配置網路
一 ubuntu命令列修改網路配置方法 etc network inte ces 開啟後裡面可設定dhcp或手動設定靜態ip。前面auto eth0,讓網絡卡開機自動掛載.1.以dhcp方式配置網絡卡 編輯檔案 etc network inte ces sudo vi etc network int...
在Shiro框架內使用快取註解失效的解決辦法
這個問題困擾了我好多天 問題serviceimpl類裡的方法上有快取註解,用於將返回的實體類存入redis,下次呼叫時就不需要通過資料庫獲取實體類資訊。shiro框架內由於自定義了ream,需要注入service來獲取使用者實體類資訊。而後執行時,發現快取註解並沒有起作用,兩次呼叫service方法...
在Shiro框架內使用快取註解失效的解決辦法
這個問題困擾了我好多天 問題serviceimpl類裡的方法上有快取註解,用於將返回的實體類存入redis,下次呼叫時就不需要通過資料庫獲取實體類資訊。shiro框架內由於自定義了ream,需要注入service來獲取使用者實體類資訊。而後執行時,發現快取註解並沒有起作用,兩次呼叫service方法...