SSM 框架 Shiro 的實現

SSM 框架 Shiro 的實現

  1. 結合官網的步驟來寫
  2. Shiro 一直支持 Spring Web 應用程序。在 Web 應用程序中,所有可通過 Shiro 訪問的 Web 請求都必須通過主 Shiro 過濾器。此過濾器本身非常強大,允許基於任何 URL 路徑表達式執行臨時自定義過濾器鏈。
  3. Spring Boot 集成 Apache Shiro :https://blog.csdn.net/Roobert_Chao/article/details/89971828
  1. Web.xml 文件中定義 Shiro 的過濾器<filter> 以及 過濾器映射 <filter-mapping>。
    【注意】:Web.xml配置,Shiro 的 Filter 必須放在其他 Filter 之前。
    <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>shiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  2. applicationContent.xml 中,配置內容比較多,可以單獨的引用出來 applicationContent-shiro.xml 。
    【realm】
    <bean id="myRealm" class="cn.chao.shiro.shiromyself.shiro.MyShiroRealm"></bean>
    【lifecycleBeanPostProcessor】
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
    【配置 Shiro 的 SecurityManager Bean】
     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="cacheManager" ref="cacheManager"/>
        <property name="realm" ref="myRealm"/>
    </bean>
    
    【配置 ShiroFilter bean】
    [ 注意事項 ]:bean 的 id 必須 和 web.xml 文件中配置的 shiroFilter 的 name 一致
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- 裝配 securityManager -->
        <property name="securityManager" ref="securityManager"/>
        <!-- 配置登陸頁面 -->
        <property name="loginUrl" value="/index.html"/>
        <!-- 登陸成功後的一面 -->
        <property name="successUrl" value="/success.html"/>
        <property name="unauthorizedUrl" value="/unauthorized.html"/>
        <!-- 具體配置需要攔截哪些 URL, 以及訪問對應的 URL 時使用 Shiro 的默認的 Filter 進行攔截.  -->
        <property name="filterChainDefinitions">
            <value>
                <!-- 配置登出: 使用 logout 過濾器 -->
                /logout = logout	退出攔截器
                /open/** = anon	匿名攔截器:攔截 路徑是 open 的所有
                /user/** = roles[user]	用戶擁有角色[user]:角色攔截器-->攔截所有的 /user/** 路徑
                /admin/** = roles[admin]
                /** = authc	所有路徑,都需要認證。
            </value>
        </property>
    </bean>
    
    【配置緩存管理器】
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <!-- 加載 ehcache 的配置文件,文末 ehcache-shiro.xml 配置文件。-->
        <property name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml"/>
    </bean>
    
  3. SpringMVC 的配置文件。

之前我們講過。
Aop 切面編程,爲什麼 @Aspect 不能作用於 controller 層 # 三

Shiro 官網給出。如圖紅框所示內容,只需要將這兩個 Bean 定義 添加到 applicationContent.xml 中,但是,現在需要將這兩個 Bean 放在 springmvc.xml 文件中。
在這裏插入圖片描述
4. 編寫 MyRealm.java 文件。
在這裏插入圖片描述
5. 編寫 LoginController.java 文件。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章