在基于Spring的应用程序中启用Shiro注释

时间:2014-01-14 05:31:22

标签: java spring shiro

我有两个模块的项目 - 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>? 谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

您的配置已足够。如果您有其他AOP设置,例如BeanNameAutoProxyCreator,则还需要将bean AuthorizationAttributeSourceAdvisor添加到属性interceptorNames中。