shiro在于Springmvc和Spring集成中可以使用编程式、jsp标签和注解来实现权限认证,注解在官方文档中致写了配置,但没有写在哪儿配置
要想使用shiro注解实现权限控制,我们需要在Springmvc中加入如下配置
<!-- shiro中注解起作用必须配置在springmvc配置文件中,配置在其他地方无效 --> <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配置文件)
注解配置成功了,但是对于没有权限的用户访问指定页面时后台会报500错误,解决此问题的方法是
<!-- 配置异常跳转页面,此处异常页面是使用shiro注解时没有权限访问的跳转页面,不配置则会报500错误 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="org.apache.shiro.authz.UnauthorizedException"> <!-- 没有权限时跳转的页面 --> /unauthorized </prop> <prop key="org.apache.shiro.authz.UnauthenticatedException"> <!-- 认证错误时跳转的页面 --> /unauthenticated </prop> </props> </property> </bean>