天天看點

自定義casrealm

自定義Realm繼承CasRealm

參考位址: 點選打開連結

<!-- cas Realm實作 -->

        <bean id="casRealm" class="com.vacomall.shiro.realm.MyCaseRealm">

            <!-- 加入Dao -->

            <property name="userMapper" ref="userMapper"></property>

            <!-- 加入憑證比對器 -->

            <!-- <property name="credentialsMatcher" ref="credentialsMatcher"></property> 

-->

            <!-- 開啟緩存 -->

            <property name="cachingEnabled" value="true"></property>

            <!-- 身份驗證資訊緩存是否開啟 -->

            <property name="authenticationCachingEnabled" value="true"/>

            <!-- 身份驗證資訊緩存名字 -->

            <property name="authenticationCacheName" value="casAuthenticationCache"/> 

            <!-- 使用者身份授權資訊 --> 

            <property name="authorizationCachingEnabled" value="true"/> 

            <!-- 使用者身份授權資訊緩存名字 -->   

            <property name="authorizationCacheName" value="casAuthorizationCache"/>

            <!-- 該位址為cas server位址 -->

            <property name="casServerUrlPrefix" value="https://localhost:8443/cas"></property>

            <!-- 該位址為本地伺服器登入成功後的ticket -->

            <property name="casService" value="https://localhost:8080/spring_mybatis/index"></property>

        </bean>

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

            <!-- 驗證與授權是否通過 :擷取身份驗證資訊(doGetAuthenticationInfo)及授權資訊(doGetAuthorizationInfo) 

                   進行互動-->

            <property name="realm" ref="casRealm"></property>

                    <!-- list>

                        <ref bean="userRealm"/>

                        <ref bean="casRealm"/>

                    </list> -->

            <!-- 注入會話管理器    進行互動-->

            <property name="sessionManager" ref="sessionManager"/>

            <!-- 緩存管理器   進行互動-->

            <property name="cacheManager" ref="cacheManager"/>

            <!-- 設定securityManager安全管理器的rememberMeManager -->

            <property name="rememberMeManager" ref="rememberMeManager"></property>

            <!-- sessionMode參數設定為native時,那麼shrio就将使用者的基本認證資訊儲存到預設名稱為shiro-activeSessionCache

的Cache中 -->

            <!--<property name="sessionMode" value="native" />-->

            <property name="subjectFactory" ref="casSubjectFactory"/>

        </bean>

 <!-- cas過濾器 -->

        <bean id="casFilter" class="org.apache.shiro.cas.CasFilter">

            <!-- 配置驗證錯誤時的失敗頁面  -->

            <property name="failureUrl" value="/casFailure.jsp"/>

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">

            <!--  Shiro的核心安全接口,這個屬性是必須的   -->

            <property name="securityManager" ref="securityManager"/>

            <!-- 要求登入時的連結(登入頁面位址),非必須的屬性,預設會自動尋找Web工程根目錄下的"/login.jsp"頁面-->

            <property name="loginUrl" value="https://localhost:8443/cas/login?service=http://localhost:8080/spring_mybatis/index"/>

            <!-- 登入成功後要跳轉的連接配接(本例中此屬性用不到,因為登入成功後的處理邏輯在LoginController裡寫死) -->

            <!-- <property name="successUrl" value="/" ></property> -->

            <!-- 通過unauthorizedUrl屬性指定如果授權失敗時重定向到的位址 -->

            <property name="unauthorizedUrl" value="/unauthorized.jsp"/>

            <!-- 使用基于表單的過濾器 -->

            <property name="filters">

               <util:map>

                    <!-- <entry key="authc" value-ref="formAuthenticationFilter"></entry> 

                    <!-- <entry key="ssl" value-ref="sslFilter"></entry>  -->

                       <entry key="cas" value-ref="casFilter"></entry>

               </util:map>

            </property> 

            <property name="filterChainDefinitions">

                <!-- “/authenticated.jsp = authc”表示通路該位址使用者必須身份驗證通過

                        (Subject. isAuthenticated()==true);

                         而“/** = user”表示通路該位址的使用者是身份驗證通過或RememberMe登入的都可以。 -->

                <value>

                    /dologin = anon

                    /index = anon

                    /register = anon

                    /register.jsp = anon

                    /index.jsp = cas

                    /unauthorized.jsp = anon

                    /login.jsp =anon

                    /logout = logout

                    /** = user

                </value>

            </property>

繼續閱讀