shiro奇怪問題之anno不起作用

2021-08-22 16:41:43 字數 1006 閱讀 1063

在許可權管理中,用的是shiro,但因為要提供一些http協議的json資料供客戶端ajax呼叫,所以提供這些資料的action 便不能使用shiro限制,否則獲取不到資料。於是在shiro的配置檔案中將其設定為:anno如下:

/web/** = anon
但是奇了怪了,每次訪問這個action,還是會跳轉到登入頁面。

然而在另乙個專案中,同樣的配置,卻是可以訪問。

檢視控制台,有幾個查詢語句,仔細分析,發現查詢語句是sitemesh母板中用到的,懷疑是action被sitemesh解析,但是另外乙個專案配置完全相同,如果會被解析,應該都被解析啊,但另乙個為什麼訪問正常呢?

但沒有辦法,還是把該action路徑在sitemesh的配置檔案中做了exclude處理,再次訪問,發現果然不再跳轉登入頁面了,而是出現了異常。

異常內容不再複製了,大意就是說無法建立action,因為乙個空指標異常,最終檢查的結果是,這個action繼承於乙個basecore.crudaction,而這個crudaction的建構函式中,判斷了當前登入使用者,在判斷中,未增加判斷使用者為null的情形,而是直接判斷這個使用者的相關屬性,所以導致在不登入訪問action時,該使用者為null,直接訪問其屬性導致空指標異常(另一專案此處判斷了使用者為null的情況,所以可以訪問)。而因為異常會直接捕獲轉向到異常頁面,而異常頁面被sitemesh母板解析,所以導向了母板檔案,而母板檔案又引入了許可權判斷,在發現無認證的情況下會直接導向登入頁面,所以就會出現一訪問就到登入頁面的情況。

但是這裡面也有一點我無法理解,也是我解決這個問題花費很長時間都沒往這方面想的原因,就是對於異常頁面,我在sitemesh裡是設定為exclude的,不知道為何會進入母板解析。這個需要後面再詳細研究。

總之,anno不起作用,很大可能不是配置的問題,而是程式本身的問題,只是在沒有任何異常提示的情況下直接跳轉到登入頁面,所以很容易使人迷惑,以為是配置檔案未起作用。之前其實我就碰到過這個問題,解決了未曾記錄,導至這一次再出現這種問題居然依然無法想起原因,所以好記性不如爛筆頭,記錄於此,以備檢視。

奇怪的問題之cpu

家裡用的台式電腦,比較舊一點,是03年自己裝的,c2.0 碩泰克815e 512msdr 160 80 g,現在出問題了,並且出的問題相當讓人鬱悶。我的機器是兩塊硬碟都可以引導,在系統啟動選擇單上無論選擇哪個,都是提示ntoskrnl.exe損壞,無法啟動,停留幾秒鐘後自動重新啟動,然後一直這樣迴圈...

Python selenium 之奇怪問題總結

問題1 time elapsed 0 00 04.464552 有時經常瞬間就執行完了程式,但實際上乙個case都沒執行,經過反覆實驗得知,是pattern原因 discover unittest.defaulttestloader.discover test case dir,pattern sp...

Redhat 5 5 不接顯示器出現的奇怪問題

今天碰到乙個奇怪的問題。想配置乙個不帶鍵鼠和顯示器的redhat伺服器,然後通過xmanager進行圖形介面連線 1.帶鍵鼠和顯示器配置redhat伺服器,並設定gdm保證xmanager能連線 注意關掉redhat防火牆,網上介紹的新增iptables規則不好使 2.拔掉鍵鼠和顯示器。在進行第1步...