在SpringMVC中开启Shiro注解授权的正确方法
来源:互联网 发布:windows defender禁用 编辑:程序博客网 时间:2024/06/01 09:42
临近年关,不知道是不是大家都空下来了,有时间学习了。最近好几个好学的童鞋在问我为什么他们在Srping的配置中文件中配置好了Shiro的注解支持Bean。但是在Controller中通过注解授权的时候就是不能生效。配置如下:
<span style="font-size:14px;"><bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/><bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/><bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"><property name="securityManager" ref="securityManager"/></bean></span></span>
首先我说,上面的配置是正确的,可是为什么不生效呢,今天我就来说说这事儿。
我们知道Shiro的注解授权是利有Spring的AOP实现的。在程序启动时会自动扫描作了注解的Class,当发现注解时,就自动注入授权代码实现。也就是说,要注入授权控制代码,第一处必须要让框架要可以扫描找被注解的Class 。而我们的Srping项目在ApplicationContext.xml中一般是不扫描Controller的,所以也就无法让写在Controller中的注解授权生效了。因此正确的作法是将这配置放到springmvc的配置文件中.这样Controller就可以通过注解授权了。
不过问题来了,通过上面的配置Controller是可以通过注解授权了,但是Services中依然不能通过注解授权。虽然说,如果我们在Controller控制了授权,那么对于内部调用的Service层就可以不再作授权,但也有例外的情况,比如Service除了给内部Controller层调用,还要供远程SOAP调用,那么就需要对Service进行授权控制了。同时要控制Controller和Service,那么采用相同的方式,我们可以在ApplicationContext.xml中配置类同的配置,以达到相同的效果。
<bean id="serviceAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/><bean id="serviceAuthorizationAttributeSourceAdvisor" class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"><property name="securityManager" ref="securityManager"/></bean>
在springmvc.xml中的配置改为
<bean id="controllerAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/><bean id="controllerAuthorizationAttributeSourceAdvisor" class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"><property name="securityManager" ref="securityManager"/></bean>
此时,我们在同一个项目中配置了两个,DefaultAdvisorAutoProxyCreator 和AuthorizationAttributeSourceAdvisor.需要给它们指定不同的ID。
0 0
- 在SpringMVC中开启Shiro注解授权的正确方法
- 解决springMVC中 shiro 注解授权失效 的问题
- springmvc中Shiro注解无效问题的解决方案
- Shiro 采用注解方式无法进入自定义Realm类的授权方法 解决方案
- aop:config在shiro权限注解中发挥的作用
- Apache Shiro 注解方式授权
- shiro注解授权源码分析
- spring集成shiro注解授权
- shiro-从数据库中获取授权信息与显示菜单在页面上(注解版和jsp标签)
- SpringMVC Shiro 使用手册关于【Shiro 授权】
- 我的shiro之旅-注解方式授权
- Shiro的注解(@RequiresRoles,@RequiresPermissions)授权不起作用
- Shiro的注解(@RequiresRoles,@RequiresPermissions)授权不起作用
- SpringMvc通过自定义注解在方法的参数中注入数据
- shiro用户授权的时候,在springmvc.xml配置出现The prefix "aop" for element "aop:config" is not bound.
- shiro授权,自定义realm实现授权,shiro与项目集成,在项目中实现认证及授权
- springmvc集成shiro注解权限
- shiro授权的使用
- plsql developer导入导出数据库
- zoj 3471Running
- JavaSE024_枚举的应用之存入List集合
- Xib
- python爬虫抓取新华网新闻并自动生成word文档
- 在SpringMVC中开启Shiro注解授权的正确方法
- Java注解学习:注解术语以及自定义注解
- windows安装MySQL压缩包
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) B. Guess the Permutation
- <BEA-090403> <Authentication for user admin denied>
- Effective Java读书笔记(六)
- mybatis时间类型映射:java.util.date到mysql的datetime
- jsp servlet接收中文乱码的问题
- Linux生成core文件、core文件路径设置