在spring与shiro的集成过程中遇到了这样一个问题,在shiro的Web过滤器中添加了loginUrl地址,启动项目后shiro并未拦截loginurl地址。
百度了一下,大多数是说未开启spring的动态代理,即添加下面的代码到mvc配置文件中,但是并未起作用。
<aop:config proxy-target-class="true"></aop:config> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean>
但是,仔细看过后,发现我是开启了表单身份验证过滤器
<!-- 基于Form表单的身份验证过滤器 -->
<bean id="formAuthenticationFilter" class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
<property name="usernameParam" value="username"/>
<property name="passwordParam" value="password"/>
<property name="rememberMeParam" value="rememberMe"/>
<property name="loginUrl" value="/loginpage"/>
</bean>
此处的loginUrl地址需要跟你在shiro的web过滤器中配置的loginUrl地址保持一致,问题解决