<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login"/> <property name="unauthorizedUrl" value="/nopermission.jsp"/> <property name="filterChainDefinitions"> <value> /logout=logout /**=authc </value> </property> </bean>
<--shiro过虑器,DelegatingFilterProx会从spring容器中找shiroFilter -->
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name和ShiroFilterFactoryBean的名字保持一致
<!-- 开启aop,对类代理 -->
<aop:config proxy-target-class="true"></aop:config>
<!-- 开启shiro注解支持 -->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>
对于权限注解的使用,使用编程方式的话,就是在方法里面进行判断,这样不好,而用jsp标签进行权限控制,就相当于使用JSTL标签库中的if,没有权限就不给显示,但是这样直接在URL中输入目标地址还是可以访问,使用注解是最好的
使用注解注意三点,注解本身,被贴的程序元素,第三方程序的参与,<aop:config proxy-target-class="true"></aop:config> 就是对类做代理,org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor就是支持shiro注解的类
原文:https://www.cnblogs.com/java-jiangtao-home/p/10746043.html