解決shiro在沒有登出的情況下重新登陸的問題

2021-09-02 21:31:50 字數 651 閱讀 2324

在使用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方法...