SpringBootShiro权限注解不起作⽤的解决⽅法
⽬录
问题如下:
解决⽅法如下:
最近在学习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--------" + Subject().isPermitted("article:over"));
CommonTools.paginationConvert(request);
int ArticleNum = ArticleNum();
List<JSONObject> list = articleService.IntValue("offset"), IntValue("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发送请求时就会报如下异常,表明该⽤户没有该权限:
springboot aoporg.apache.shiro.authz.AuthorizationException: Not authorized to invoke method
到此这篇关于SpringBoot Shiro 权限注解不起作⽤的解决⽅法的⽂章就介绍到这了,更多相关SpringBoot Shiro权限注解不起作⽤内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。