在学习shiro的过程中遇到了一个问题,使用注解方式没有起作用如下:
在service层
@RequiresRoles({"admin"}) public void testMethod(){ System.out.println("aaabbb"); }
或者在 如下在Control层
@RequestMapping("testShiroService") /** * @RequiresRoles 是shiro的注解,表示需要有admin角色 */ @RequiresRoles({"admin"}) public String testShiroService(){ shiroServcie.testMethod(); return "redirect:/home.jsp"; }
加入了@RequiresRoles({"admin"})注解,这个意思是只有授权admin这个角色时才能执行。但是真实测试时user角色时也能执行。
网上说需要配置开启注解,我也配置了,但是还是不起作用
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" > <property name="proxyTargetClass" value="true" /> </bean> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean>
在另一文章中看到,说将上边的配置放在spring-mvc.xml的文件中,不是放在spring.xml文件中,所以就按照这个试了试,果然可以了。 特此记录下
另外附上学习shiro的一个源码,供以后参考