1. 程式人生 > >自學-Shiro中多個Realms的另外一種配置方式-11

自學-Shiro中多個Realms的另外一種配置方式-11

前幾節中專案中的Realms都是這樣配置的,現在有一個其他的配置方法也是很好,首先先和之前的配置做個對比:

之前的:

<!--多個realm的配置-->
    <bean id="authenticator" class="org.apache.shiro.authc.pam.ModularRealmAuthenticator">
    	<!--<property name="realms">
    		<list>
    			<ref bean="jdbcRealm"/>
    			<ref bean="jdbcRealm2"/>
    		</list>
    	</property>
    	--><property name="authenticationStrategy">
    		<bean class="org.apache.shiro.authc.pam.AllSuccessfulStrategy">
    		</bean>
    	</property>
    </bean>

現在的:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="cacheManager" ref="cacheManager"/>
        <!-- Single realm app.  If you have multiple realms, use the 'realms' property instead. -->
        <property name="sessionMode" value="native"/>
        <!--<property name="realm" ref="jdbcRealm"/>
    -->
    <property name="authenticator" ref="authenticator"></property>
    <property name="realms">
    		<list>
    			<ref bean="jdbcRealm"/>
    			<ref bean="jdbcRealm2"/>
    		</list>
    	</property>
    </bean>

現在改為realms有securityManager來進行管理。這樣做為什麼是可以的呢?我們來探個究竟吧。

首先我們想想該在哪裡打個斷點呢,首先是獲取到realms,肯定有個setRealams來給realms來設定值吧。所以我們就在set方法這裡設定一個斷點。

AuthenticatingSecurityManager下面的方法:


這樣就可以由securityManager來進行管理realms了。