Shiro @RequiresRoles注解不生效解决方案及相应设置
来源:互联网 发布:淘宝详情页制作技巧 编辑:程序博客网 时间:2024/06/03 22:55
刚开始集成的时候@RequiresRoles和@RequiresPermissions注解一直不生效,只能进入方法之后在代码中判断
Subject subject= SecurityUtils.getSubject(); try { subject.checkPermissions("add","update"); }catch (UnauthorizedException e){ log.info("错误信息:"+e.getMessage()); //TODO 定义错误处理页面 log.info("权限不足"); }
后来查了下发现注解必须必须要使用相应的bean才能生效:
@Bean public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @Bean public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator(){ return new DefaultAdvisorAutoProxyCreator(); }
网上搜的时候这俩bean是在一起的,LifecycleBeanPostProcessor 是管理shiro生命周期的,不直接跟权限注解关联。所以加上DefaultAdvisorAutoProxyCreator 这个bean就可以了。
在代码中通过subject控制跟使用注解两种方式功能是一样的,但是有些时候必须要用注解:
@RequiresRoles(value={"admin","user"},logical = Logical.OR) @RequiresPermissions(value={"add","update"},logical = Logical.AND)
如果有多个权限/角色验证的时候中间用“,”隔开,默认是所有列出的权限/角色必须同时满足才生效。但是在注解中有logical = Logical.OR
这块。这里可以让权限控制更灵活些。
如果将这里设置成OR,表示所列出的条件只要满足其中一个就可以,如果不写或者设置成logical = Logical.AND,表示所有列出的都必须满足才能进入方法。
用subject这种通过代码控制的方法我没有深入了解,所以没有找到这种权限的控制。再加上使用注解更加简洁明了,所以个人更倾向于使用注解方式来控制。
如果抛出异常就写个专门处理shiro异常处理的类,可以参考我前面的文章Spring Boot集成无状态Shiro–内容详细介绍
阅读全文
0 0
- Shiro @RequiresRoles注解不生效解决方案及相应设置
- Shiro Springmvc 权限注解不生效
- shiro注解不生效(表象)
- Shiro的注解(@RequiresRoles,@RequiresPermissions)授权不起作用
- Shiro的注解(@RequiresRoles,@RequiresPermissions)授权不起作用
- shiro与spring整合详解与spring项目中shiro注解不生效的解决办法
- spring事务注解不生效
- spring 注解aop不生效
- Spring @Transactional注解不生效
- apache shiro框架的@RequiresRoles 不起作用
- 环境变量设置后不生效
- 设置状态栏颜色不生效
- raido设置选中不生效
- SpringMVC + Shiro通过注解配置的权限未生效
- spring mvc 注解配置StringHttpMessageConverter不生效
- spring mvc 注解配置StringHttpMessageConverter不生效
- @Transaction注解不生效的问题
- spring mvc 注解事务不生效
- 简易麻将平胡算法
- 用数组给selec元素插入选项
- display:inline-block,block,inline的区别与用法
- 《Effective Java》------对所以对象都通用的方法
- vmware14版本虚拟机黑屏问题解决方案
- Shiro @RequiresRoles注解不生效解决方案及相应设置
- 序列子区间异或和
- 【OpenCV入门教程之五】 分离颜色通道&多通道图像混合
- Azkaban初步使用(二)
- JVM性能调优(一)
- 蓝桥杯嵌入式类比赛经验分享
- 单列集合
- 你知道android的MessageQueue.IdleHandler吗?
- 堆和栈