前几节中项目中的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了。