自定義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>