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
参考博客:
****/d/file/p/2021072818002378373/2021072818002378374.html />
****/d/file/p/2021072818002378385/2021072818002378386.html />
到此这篇关于SpringBoot Shiro 权限注解不起作用的解决方法的文章就介绍到这了,更多相关SpringBoot Shiro权限注解不起作用内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/7254.html