我有两个模块的项目 - web 和商业。
在 web模块中,有一个带配置的shiro.ini文件(如教程中所示 - https://github.com/lhazlewood/apache-shiro-tutorial-webapp/blob/step7/src/main/webapp/WEB-INF/shiro.ini - 带有我自己的属性)。
在商务模块中,有一个带有此代码的applicationContext.xml文件:
<bean id="iniRealm" class="org.apache.shiro.realm.text.IniRealm">
<property name="resourcePath" value="file:C:\project\webmodule\src\main\webapp\WEB-INF\shiro.ini" />
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" />
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="iniRealm" />
</bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>
但是如果我想使用注释,例如@RequiresAuthentication
,它就不起作用。
applicationContext.xml中的配置是否足够?哪里可能是个错误? web模块中的身份验证工作正常。
过滤器有问题吗?我是否必须定义两个过滤器,一个使用<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
,另一个使用<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
?
谢谢你的任何建议。
答案 0 :(得分:1)
您的配置已足够。如果您有其他AOP设置,例如BeanNameAutoProxyCreator
,则还需要将bean AuthorizationAttributeSourceAdvisor
添加到属性interceptorNames
中。