連續被折磨三天,shiro的@requirespermissions註解就是感覺不到生效,找各種博文、帖子也解決不了,最後逼著對shiro斷點觀察,終於找到問題根源...
在網上找資料,一般註解不生效,主要有兩個原因:
1、沒有啟用shiro註解功能。而啟用該功能主要有如下兩種方式:
①、使用
②、使用defaultadvisorautoproxycreator
2、需要將以上開啟shiro註解功能放在spring-mvc.xml檔案中。
說明:這種情況我沒遇上,我的也沒放進改配置檔案中,我是直接放在spring-shiro.xml檔案中,然後在web.xml的context-param中引入的。
但是,我這邊並不是這兩種情況,試了各種情況,發現都不好使,最後在org.apache.shiro.authz.aop.permissionannotationhandler斷點跟進,發現確實進去了,說明@requirespermissions確實生效,可為什麼我配置乙個錯誤的許可權值(@requirespermissions(operative:manager:itemlist111111),正確的是@requirespermissions(
operative:manager:itemlist
))還是報錯呢?最後發現受shiro的匹配規則影響,因為我在系統中已經有了乙個operative:manager許可權,所以在末尾加許可權項會讓shiro判斷已經擁有該許可權。
好吧,終於找到問題根源,然後我將已經存在的
operative:manager改為operative:manager:manager就全部ok了。
shiro許可權不生效原因分析
許可權標籤定義如下 標籤定義 頁面一頁面二 第一層級 one view two view 第二層級 one page1 view two page2 view 第三層級 one page1 view add two page2 view add 開始懷疑是資料庫沒有錄入,檢視後許可權標籤與角色已對應...
spring 註解aop不生效
首先基礎要理解spring配置檔案和springmvc配置檔案 spring註解不生效可從以下幾個方面找原因 1 springmvc的配置檔案中只配置掃瞄 controller的註解,spring的配置檔案掃瞄除了 controller的註解的其他的註解 2 檢查 pointcut 的表示式是否正確...
Cacheable註解不生效原因
cacheable註解中 乙個方法a調同乙個類裡的另乙個有快取註解的方法b,這樣是不走快取的。例如在同乙個service裡面兩個方法的呼叫,快取是不生效的 解決方案 1.不使用註解的方式,直接取 ehcache 的 cachemanger 物件,把需要快取的資料放到裡面,類似於使用 map,快取的邏...