shiro多realm认证策略

1、多Realm配置和认证策略的配置

配置多个realm以及认证策略

1、配置securityManager的realms属性下配置多个realm

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" >
        <property name="cacheManager" ref="cacheManager"></property>
<!--        在realms属性中配置多个realm-->
        <property name="realms">
            <list>
            <!-- myRealm(MD5加密)、myRealm2(SHA1加密)均为Realm接口的实现类 -->
                <ref bean="myRealm"></ref>
                <ref bean="myRealm2"></ref>
            </list>
        </property>
    </bean>

2、通过ModularRealmAuthenticator类中的authenticationStrategy属性来配置响应的认证策略认证策略默认的认证策略为AtLeastOneSuccessfulStrategy

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" >
        <property name="cacheManager" ref="cacheManager"></property>
        <!-- 注意authenticator要比realms先配置否则可能引发
			One or more realms must be present to execute an authorization operation.
		-->
        <!-- 配置authenticator,认证策略及授权 -->
        <property name="authenticator" ref="authenticator"></property>
        <property name="realms">
            <list>
                <ref bean="myRealm"></ref>
                <ref bean="myRealm2"></ref>
            </list>
        </property>
    </bean>
    <!-- ModularRealmAuthenticator类 -->
    <bean class="org.apache.shiro.authc.pam.ModularRealmAuthenticator" id="authenticator">
        <!-- 配置认证策略 -->
        <!-- 默认的认证策略为:AtLeastOneSuccessfulStrategy -->
        <property name="authenticationStrategy">
            <bean class="org.apache.shiro.authc.pam.AllSuccessfulStrategy"></bean>
        </property>
    </bean>

2、认证策略

认证策略效果
AllSuccessfulStrategy所有的realm都必须认证通过,返回所有通过realm的认证信息
AtLeastOneSuccessfulStrategy至少通过一个realm认证,返回所有通过的realm的认证信息
FirstSuccessfulStrategy第一条realm通过后面的realm认证都忽略(并非不执行),只返回第一个通过条realm的认证信息

AllSuccessfulStrategy 效果

默认realm2认证通不过

在这里插入图片描述
在这里插入图片描述

AtLeastOneSuccessfulStrategy 效果

默认realm1认证不通过,realm2通过

在这里插入图片描述
在这里插入图片描述
FirstSuccessfulStrategy 效果

默认realm1通过认证,realm2不通过

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值