SpringBoot Shiro 權(quán)限注解不起作用的解決方法
最近在學習springboot結(jié)合shiro做權(quán)限管理時碰到一個問題。
問題如下:
我在userRealm中的doGetAuthorizationInfo方法中給用戶添加了權(quán)限,然后在Controller中寫了下面的代碼。其中URL為/listArticle的方法必須要有article:over權(quán)限才能通過。我在doGetAuthorizationInfo方法中給該用戶添加的權(quán)限并沒有article:over,但是當前端向該URL發(fā)送請求時,@RequiresPermissions注解不起作用,listArticle方法被執(zhí)行了。而且我在方法內(nèi)部打印isPermitted("article:over")的輸出結(jié)果為false。最終通過網(wǎng)上查博客,發(fā)現(xiàn)是沒有開啟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注解的支持
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
//開啟aop注解支持
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();
defaultAAP.setProxyTargetClass(true);
return defaultAAP;
}
添加完這段代碼后,我再向該URL發(fā)送請求時就會報如下異常,表明該用戶沒有該權(quán)限:
org.apache.shiro.authz.AuthorizationException: Not authorized to invoke method
參考博客:
https://www.cnblogs.com/shiguotao-com/p/10617693.html
https://www.cnblogs.com/tuifeideyouran/p/7696055.html
到此這篇關(guān)于SpringBoot Shiro 權(quán)限注解不起作用的解決方法的文章就介紹到這了,更多相關(guān)SpringBoot Shiro權(quán)限注解不起作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用java swing實現(xiàn)qq登錄界面示例分享
這篇文章主要介紹了使用java swing實現(xiàn)qq登錄界面示例,需要的朋友可以參考下2014-04-04
Java設計模式之觀察者模式_動力節(jié)點Java學院整理
這篇文章給大家介紹流量java設計模式之觀察者模式,定義對象間一種一對多的依賴關(guān)系,使得當每一個對象改變狀態(tài)。下面通過類圖和實例代碼給大家介紹java設計模式之觀察者模式,感興趣的朋友一起看看吧2017-08-08
Java中BigDecimal與0比較的一個坑實戰(zhàn)記錄

