自學-Shiro中多個Realms的另外一種配置方式-11
阿新 • • 發佈:2019-02-07
前幾節中專案中的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了。