SpringBoot Shiro 权限注解不起作用的解决方法

网友投稿 1272 2022-12-24

SpringBoot Shiro 权限注解不起作用的解决方法

SpringBoot Shiro 权限注解不起作用的解决方法

目录问题如下:解决方法如下:

最近在学习springboot结合shiro做权限管理时碰到一个问题。

问题如下:

我在userRealm中的doGetAuthorizationInfo方法中给用户添加了权限,然后在Controller中写了下面的代码。其中URL为/listArticle的方法必须要有article:over权限才能通过。我在doGetAuthorizationInfo方法中给该用户添加的权限并没有article:over,但是当前端向该URL发送请求时,@RequiresPermissions注解不起作用,listArticle方法被执行了。而且我在方法内部打印isPermitted("article:over")的输出结果为false。最终通过网上查博客,发现是没有开启Shiro的注解http://支持的原因。

@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 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发送请求时就会报如下异常,表明该用户没有该权限:

org.apache.shiro.authz.AuthorizationException: Not authorized to invoke method

参考博客:

https://cnblogs.com/shiguotao-com/p/10617693.html

https://cnblogs.com/tuifeideyouran/p/7696055.html

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:明政一体化政务服务平台(政务统一服务平台)
下一篇:关于智能车载终端学时系统的信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~