shiroとspringは集積します
5215 ワード
Shroアプリケーションは、一例のSecurityManagerのインスタンスを持つアプリケーションが必要です.これは静的な単一の例ではないが、静的な単一の例であるかどうかにかかわらず、アプリケーションが使用できる例だけが必要である.
Springアプリケーションでアプリケーション単一例SecurityManagerを有効にする一番簡単な設定:
Springアプリケーションでアプリケーション単一例SecurityManagerを有効にする一番簡単な設定:
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod"value="org.apache.shiro.SecurityUtils.setSecurityManager" />
<property name="arguments" ref="securityManager" />
</bean>
<!-- -->
<bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager">
<property name="realm" ref="myRealm" />
</bean>
<bean id="myRealm" class="org.apache.shiro.realm.text.IniRealm">
<property name="resourcePath" value="D:/wp/src/TestShiro.ini"></property>
</bean>
注:セキュリティマネージャは、ウェブ環境用のDefault WebSecurityManagerを使用します.在web.xml中:
注:DelegatingFilterProxyは自動的にSpring容器の中でshirofilterという名前のbeanを探して、filterの要求をそれに渡して処理します.<!-- DelegatingFilterProxy Spring shiroFilter bean filter --> <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>
springのappication Contect.xmlファイルでは、webサポートを定義するSecurityManagerと'shiro Filter'beanがweb.xmlに引用されます.注:ShroFilter:ここでShroFilter FactoryBeanを使ってShroFilterフィルタを作成します.filters属性は、自分のフィルタ、すなわちini構成における「filters」部分を定義するために使用される.filterChanDefinitionsは、urlとfilterの関係、すなわちini構成における「urls」の部分を宣言するために使用されます.<!-- Shiro Web ;shiroFilter: ShiroFilterFactoryBean ShiroFilter ;filters , ini [filters] ;filterChainDefinitions url filter , ini [urls] 。--> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <!-- , --> <property name="loginUrl" value="/login.jsp" /> <property name="unauthorizedUrl" value="/unauthorized.jsp" /> <!-- filters , filterChainDefinitions filter。 filter shiro , filter --> <property name="filters"> <util:map> <!-- : filter shiro , filter --> <entry key="authc" value-ref="formAuthenticationFilter" /> <!-- : filter filter --> <entry key="jCaptchaValidate" value-ref="jCaptchaValidateFilter" /> </util:map> </property> <property name="filterChainDefinitions"> <value> <!-- urls, url filter --> /jcaptcha* = anon /logout = logout /login = jCaptchaValidate,authc </value> </property> </bean>
注:フォームフォームに基づく認証フィルタです.ここで自分のFilter bean定義を追加できます.<!-- form --> <bean id="formAuthenticationFilter" class="cn.javass.CustomFormAuthenticationFilter"> ...... </bean> <!-- SecurityManger、Realms --> <bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager"> <property name="realm" ref="myRealm" /> </bean> <bean id="myRealm" class="org.apache.shiro.realm.text.IniRealm"> <property name="resourcePath" value="D:/wp/src/TestShiro.ini"></property> </bean> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"depends-on="lifecycleBeanPo stProcessor"> <property name="proxyTargetClass" value="true" /> </bean> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager" /> </bean>
まとめ:shiroとspringは統合して、springはshiroの各管理種類とフィルタを管理して、容器は管理して、応用は更に便利です.<!-- --> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"> <property name="proxyTargetClass" value="true" /> </bean> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttri buteSourceAdvisor"> <property name="securityManager" ref="securityManager" /> </bean>