SpringBoot Shiro 权限注解不起作用的解决方法
程序员文章站
2022-05-03 15:59:22
最近在学习springboot结合shiro做权限管理时碰到一个问题。问题如下:我在userrealm中的dogetauthorizationinfo方法中给用户添加了权限,然后在controller...
最近在学习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注解的支持 @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
参考博客:
到此这篇关于springboot shiro 权限注解不起作用的解决方法的文章就介绍到这了,更多相关springboot shiro权限注解不起作用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
SpringBoot 监控管理模块actuator没有权限的问题解决方法
-
SpringBoot使用AOP+注解实现简单的权限验证的方法
-
浅谈基于SpringBoot实现一个简单的权限控制注解
-
JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理
-
SpringBoot Shiro 权限注解不起作用的解决方法
-
springboot+shiro中使用 @RequiresPermissions和@RequiresRoles无效的解决方法
-
Springboot自定义注解实现简单的接口权限控制,替代Shiro/SpringSecurity
-
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
-
基于springboot @EnableWebSocket 注解完成基本的socket通信以及socket握手权限
-
SpringBoot+Shiro(用户角色权限管理的后端代码实现)