8、AuthenticationStrategy(身份驗證策略)

AuthenticationStrategy(身份驗證策略)html

官方文檔:shiro.apache.org/authenticat…web

AuthenticationStrategy 是個無狀態的組件,在認證過程當中會進行4次調用。spring

  • ① 在全部Realm被調用以前
  • ②在調用Realm的getAuthenticationInfo方法以前
  • ③在調用Realm的getAuthenticationInfo 方法以後
  • ④在全部Realm被調用以後

ModularRealmAuthenticator org.apache.shiro.authc.pam.ModularRealmAuthenticatorapache

在這裏插入圖片描述

AuthenticationStrategy org.apache.shiro.authc.pam.AuthenticationStrategymarkdown

在這裏插入圖片描述

Shiro有3中認證策略的具體實現 AuthenticationStrategy類:session

  • AtLeastOneSuccessfulStrategy(默認) 只要一個或者多個Realm認證經過,則總體身份認證就會視爲成功。
  • FirstSuccessfulStrategy 只有第一個驗證經過,纔會視爲總體認證經過。其餘的會被忽略。
  • AllSuccessfulStrategy 只有全部的Realm認證成功,纔會被視爲認證經過 自定義策略:繼承org.apache.shiro.authc.pam.AbstractAuthenticationStrategy。
  • Realm順序對認證是有影響的。

spring-shiro.xml 配置 認證策略:app

<!-- Shiro默認會使用Servlet容器的Session,可經過sessionMode屬性來指定使用Shiro原生Session -->
<!-- 這裏主要是設置自定義的單Realm應用,如有多個Realm,可以使用'realms'屬性代替 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="cacheManager" ref="cacheManager"/>
     <!--<property name="realm" ref="myRealm"/>-->
     
    <property name="authenticator" ref="authenticator"/>
</bean>

<!--多個realm 配置-->
<bean id="authenticator" class="org.apache.shiro.authc.pam.ModularRealmAuthenticator">
    <!--配置認證策略-->
    <property name="authenticationStrategy" ref="allSuccessfulStrategy"/>
    <property name="realms">
        <list>
            <ref bean="firstRealm"/>
            <ref bean="secondRealm"/>
        </list>
    </property>
</bean>
<!--所有經過-->
<bean id="allSuccessfulStrategy" class="org.apache.shiro.authc.pam.AllSuccessfulStrategy"/>
<!--只有第一個驗證經過,纔會視爲總體認證經過。其餘的會被忽略。-->
<bean id="firstSuccessfulStrategy" class="org.apache.shiro.authc.pam.FirstSuccessfulStrategy"/>
<!--默認-->
<bean id="atLeastOneSuccessfulStrategy" class="org.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategy"/>
複製代碼
相關文章
相關標籤/搜索