为什么@RequiresRoles无效,我是跟着视频敲的,springmvc.xml注解我也写了的
可以去掉<aop:config> 添加<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
<property name="proxyTargetClass" value="true" />
</bean> 试试
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> <context:component-scan base-package="com.wb.controller"> </context:component-scan> <!-- 1、这里对 / 与 /* 作扼要说明: / 是 根目录 /* 是拦截所有请求,包括.html等静态文件 (以区别于url-pattern中的 /) 2、这里既然拦截所有请求,但是却不会影响Controller 主要是因为,所有请求先经过dispatcherServlet 才会进入到 spring-mvc.xml 文件中--> <mvc:resources location="/" mapping="/*"/> <aop:config proxy-target-class="true"></aop:config> <bean class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean> <mvc:annotation-driven/> </beans>
第一,你可以看看和数据库里的权限设置是否一致,是不是值写错了。
第二,你用@RequiresRoles注解的话理论上来说不需要在配置拦截的url,如果配置了也应该保持和注解一致,你最好把xml文件里的贴出来