SpringBoot Shiro 權(quán)限注解不起作用的解決方法
最近在學(xué)習(xí)springboot結(jié)合shiro做權(quán)限管理時(shí)碰到一個(gè)問(wèn)題。
問(wèn)題如下:我在userRealm中的doGetAuthorizationInfo方法中給用戶添加了權(quán)限,然后在Controller中寫(xiě)了下面的代碼。其中URL為/listArticle的方法必須要有article:over權(quán)限才能通過(guò)。我在doGetAuthorizationInfo方法中給該用戶添加的權(quán)限并沒(méi)有article:over,但是當(dāng)前端向該URL發(fā)送請(qǐng)求時(shí),@RequiresPermissions注解不起作用,listArticle方法被執(zhí)行了。而且我在方法內(nèi)部打印isPermitted('article:over')的輸出結(jié)果為false。最終通過(guò)網(wǎng)上查博客,發(fā)現(xiàn)是沒(méi)有開(kāi)啟Shiro的注解支持的原因。
@RequiresPermissions('article:over')@RequestMapping(value = '/listArticle', method = RequestMethod.POST)public JSONObject listArticle(@RequestBody JSONObject request){ System.out.println('---------isPermitted article:over--------' + SecurityUtils.getSubject().isPermitted('article:over')); CommonTools.paginationConvert(request); int ArticleNum = articleService.getArticleNum(); List<JSONObject> list = articleService.listArticle(request.getIntValue('offset'), request.getIntValue('pageRow')); return Result.success(request, list, ArticleNum);}解決方法如下:
在ShiroConfig中添加如下一段代碼。
//開(kāi)啟對(duì)shiro注解的支持@Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor;}//開(kāi)啟aop注解支持@Beanpublic DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator(); defaultAAP.setProxyTargetClass(true); return defaultAAP;}
添加完這段代碼后,我再向該URL發(fā)送請(qǐng)求時(shí)就會(huì)報(bào)如下異常,表明該用戶沒(méi)有該權(quán)限:org.apache.shiro.authz.AuthorizationException: Not authorized to invoke method
參考博客:https://www.cnblogs.com/shiguotao-com/p/10617693.htmlhttps://www.cnblogs.com/tuifeideyouran/p/7696055.html
到此這篇關(guān)于SpringBoot Shiro 權(quán)限注解不起作用的解決方法的文章就介紹到這了,更多相關(guān)SpringBoot Shiro權(quán)限注解不起作用內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 基于javaweb+jsp實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)2. 多級(jí)聯(lián)動(dòng)下拉選擇框,動(dòng)態(tài)獲取下一級(jí)3. ASP.NET MVC實(shí)現(xiàn)樹(shù)形導(dǎo)航菜單4. 如何封裝一個(gè)Ajax函數(shù)5. Java 接口和抽象類的區(qū)別詳解6. Laravel Eloquent ORM高級(jí)部分解析7. IDEA 搭建maven 安裝、下載、配置的圖文教程詳解8. jsp response.sendRedirect()用法詳解9. Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)10. PHP擴(kuò)展之URL編碼、解碼及解析——URLs
