shiro 學(xué)習(xí)之多 Realm 配置

配置多個 Realm 我感覺是有很多好處的,比如說可以在第一個 realm 中的數(shù)據(jù)源設(shè)置為緩存, 那么就可以先去緩存中查用戶,查不到再去數(shù)據(jù)庫中查,對吧,或者說我這個項目就配有多數(shù)據(jù)源,就可以一個一個庫去查啦,暫時想到就這么多.


項目地址:https://github.com/thecattle/spring-mvc-shiro


可以看到這里沒有直接在securityManager里配置 realm 參數(shù),而是直接配置authenticator參數(shù),是在這里向ModularRealmAuthenticator類注入 realms 參數(shù),都在注釋里.
要注意的是authenticationStrategy參數(shù):

  • AllSuccessfulStrategy:所有 realm 全部認證通過才算登錄成功
  • FirstSuccessfulStrategy:驗證某個 realm 成功后直接返回,不會驗證后面的 realm 了
  • AtLeastOneSuccessfulStrategy:所有的 realm 都會驗證,其中一個成功,也會繼續(xù)驗證后面的 realm,最后返回成功

下面的otherRealm類和myRealm是自定義的realm,需要繼承AuthorizingRealm.

otherRealm:普通認證的 realm
myRealm:加密認證的 realm

 <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <!--配置 session 管理-->
        <property name="sessionManager" ref="sessionManager"></property>
        <!--配置 記住我-->
        <property name="rememberMeManager" ref="rememberMeManager"></property>
        <!-- 配置多個Realm的登錄認證 -->
        <property name="authenticator" ref="authenticator"></property>

    </bean>

    <!-- 配置多個Realm -->
    <bean id="authenticator" class="org.apache.shiro.authc.pam.ModularRealmAuthenticator">

        <!--驗證的時候,是用迭代器,所以可以認為驗證的順序就是這個 list 的順序-->
        <property name="realms">
            <list>
                <ref bean="otherRealm"/>
                <ref bean="myRealm"/>
            </list>
        </property>
        <property name="authenticationStrategy">

            <!--所有 realm 認證通過才算登錄成功-->
            <!--<bean id="authenticationStrategy" class="org.apache.shiro.authc.pam.AllSuccessfulStrategy"/>-->
            <!--驗證某個 realm 成功后直接返回,不會驗證后面的 realm 了-->
            <!--<bean id="authenticationStrategy" class="org.apache.shiro.authc.pam.FirstSuccessfulStrategy"/>-->
            <!--所有的 realm 都會驗證,其中一個成功,也會繼續(xù)驗證后面的 realm,最后返回成功-->
            <bean id="authenticationStrategy" class="org.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategy"/>
        </property>
    </bean>

    <!--自定義 MyRealm,登錄的認證入口 ,需要繼承AuthorizingRealm,項目中會體現(xiàn)-->
    <bean id="myRealm" class="com.sunp.shiro.MyRealm">
        <!-- 配置密碼匹配器 -->
        <property name="credentialsMatcher">
            <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
                <!-- 加密算法為SHA-256 -->
                <property name="hashAlgorithmName" value="SHA-256"></property>
                <!-- 加密迭代次數(shù) -->
                <property name="hashIterations" value="1024"></property>
                <!--是否存儲散列后的密碼為16進制,為 true:.toHex(),為 false:.toBase64()-->
                <property name="storedCredentialsHexEncoded" value="false"></property>
            </bean>
        </property>
    </bean>
    <!--自定義的第二個 realm-->
    <bean id="otherRealm" class="com.sunp.shiro.OtherRealm"></bean>

OtherRealm:

image.png

MyRealm:

image.png

今天感覺好累啊 也不知道寫什么了,先到這

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Apache Shiro Apache Shiro 是一個強大而靈活的開源安全框架,它干凈利落地處理身份認證,授權(quán)...
    羅志贇閱讀 3,332評論 1 49
  • 文章轉(zhuǎn)載自:http://blog.csdn.net/w1196726224/article/details/53...
    wangzaiplus閱讀 3,467評論 0 3
  • 也許.. 你也曾經(jīng)有一個想當插畫師的夢想 想為大牛雜志社畫時裝封面 也許,你也曾想?yún)⒓臃b設(shè)計比賽 向往得獎后的鮮...
    藝伙閱讀 629評論 0 1
  • 任何細分行業(yè)的大師,其最有價值的領(lǐng)悟必然是人性層面的,也適用于其他領(lǐng)域。 武俠里面,大師級別的人,一般也不會和你聊...
    人為自身立法閱讀 241評論 0 0

友情鏈接更多精彩內(nèi)容