SpringBoot Shiro 權限注解不起作用的解決方法
最近在學習springboot結合shiro做權限管理時碰到一個問題。
問題如下:我在userRealm中的doGetAuthorizationInfo方法中給用戶添加了權限,然后在Controller中寫了下面的代碼。其中URL為/listArticle的方法必須要有article:over權限才能通過。我在doGetAuthorizationInfo方法中給該用戶添加的權限并沒有article:over,但是當前端向該URL發送請求時,@RequiresPermissions注解不起作用,listArticle方法被執行了。而且我在方法內部打印isPermitted('article:over')的輸出結果為false。最終通過網上查博客,發現是沒有開啟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中添加如下一段代碼。
//開啟對shiro注解的支持@Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor;}//開啟aop注解支持@Beanpublic DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator(); defaultAAP.setProxyTargetClass(true); return defaultAAP;}
添加完這段代碼后,我再向該URL發送請求時就會報如下異常,表明該用戶沒有該權限: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
到此這篇關于SpringBoot Shiro 權限注解不起作用的解決方法的文章就介紹到這了,更多相關SpringBoot Shiro權限注解不起作用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
