中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

?springboot中集成shiro框架的方法-創(chuàng)新互聯(lián)

springboot中集成shiro框架

烏拉特前ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

關(guān)于shior框架的介紹,需要引入相關(guān)jar如下:

    <!--shiro核心jar from www.1b23.com-->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>1.4.0</version>
    </dependency>
    <!--實現(xiàn)session共享。緩存等-->
    <dependency>
        <groupId>org.crazycake</groupId>
        <artifactId>shiro-redis</artifactId>
        <version>3.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

未整合Spring/SpringBoot以前,是需要在Web.xml中定義org.apache.shiro.web.servlet.ShiroFilter過濾器的
Shiro的初始化工作在web.xml中設(shè)置監(jiān)聽器完成

<listener>   
 <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
 </listener>
 <filter>
     <filter-name>ShiroFilter</filter-name>
     <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
 </filter>
 <filter-mapping>
     <filter-name>ShiroFilter</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>
 Shiro 的 EnvironmentLoaderListener 就是一個典型的 ServletContextListener,它也是整個 Shiro Web 應(yīng)用的入口 。

EventListener 是一個標志接口,里面沒有任何的方法,Servlet 容器中所有的 Listener 都要繼承這個接口(這是 Servlet 規(guī)范)。


ServletContextListener 是一個 ServletContext 的監(jiān)聽器,用于監(jiān)聽容器的啟動與關(guān)閉事件,包括如下兩個方法:
void contextInitialized(ServletContextEvent sce); // 當容器啟動時調(diào)用
void contextDestroyed(ServletContextEvent sce); // 當容器關(guān)閉時調(diào)用

可以從 ServletContextEvent 中直接獲取 ServletContext 對象。

EnvironmentLoaderListener 不僅實現(xiàn)了 ServletContextListener 接口,也擴展了 EnvironmentLoader 類,應(yīng)該是需要在 Servlet 容器中調(diào)用 EnvironmentLoader 對象的生命周期方法
從 Shiro 1.2 開始引入了 Environment/WebEnvironment 的概念,即由它們的實現(xiàn)提供相應(yīng)的 SecurityManager 及其相應(yīng)的依賴。ShiroFilter 會自動找到 Environment 然后獲取相應(yīng)的依賴。
通過 EnvironmentLoaderListener 來創(chuàng)建相應(yīng)的 WebEnvironment,并自動綁定到 ServletContext,默認使用 IniWebEnvironment 實現(xiàn)。

EnvironmentLoader的功能:

當容器啟動時,讀取 web.xml 文件,從中獲取 WebEnvironment 接口的實現(xiàn)類(默認是 IniWebEnvironment),初始化該實例,并將其加載到 ServletContext 中。
當容器關(guān)閉時,銷毀 WebEnvironment 實例,并從 ServletContext 將其移除。
IniWebEnvironment的功能:

查找并加載 shiro.ini 配置文件,首先從自身成員變量里查找,然后從 web.xml 中查找,然后從 /WEB-INF 下查找,然后從 classpath 下查找,若均未找到,則直接報錯。
當找到了 ini 配置文件后就開始解析,此時構(gòu)造了一個 Bean 容器(相當于一個輕量級的 IOC 容器),最終的目標是為了創(chuàng)建 WebSecurityManager 對象與 FilterChainResolver 對象,創(chuàng)建過程使用了 Abstract Factory 模式
EnvironmentLoaderListener無非就是在容器啟動時創(chuàng)建 WebEnvironment 對象,并由該對象來讀取 Shiro 配置文件,創(chuàng)建WebSecurityManager(安全管理器)與 FilterChainResolver(過濾鏈解析器) 對象,在ShiroFilter中起到了重要作用。

ShiroFilter 是整個 Shiro 的入口點,用于攔截需要安全控制的請求進行處理。
因為它攔截了所有的請求,后面的 Authentication(認證)和Authorization(授權(quán))都由ShiroFilter說了算

和Spring/SpringBoot整合以后,我們只需要注入ShiroFilter即可,ShiroFilter由ShiroFilterFactoryBean負責創(chuàng)建。所以注入ShiroFilterFactoryBean,由 ShiroFilterFactoryBean創(chuàng)建 ShiroFilter即可

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:?springboot中集成shiro框架的方法-創(chuàng)新互聯(lián)
本文來源:http://www.rwnh.cn/article12/cchggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號網(wǎng)站改版、網(wǎng)站設(shè)計App設(shè)計、電子商務(wù)、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
大邑县| 中宁县| 山阳县| 民丰县| 木兰县| 炎陵县| 长泰县| 哈巴河县| 开化县| 黑水县| 宁陕县| 江城| 阜阳市| 札达县| 辽中县| 揭西县| 库车县| 英超| 昌乐县| 济阳县| 科尔| 曲阜市| 射阳县| 梅河口市| 柳河县| 卢龙县| 清水县| 鄂托克前旗| 团风县| 边坝县| 柳林县| 阿图什市| 江阴市| 兰西县| 丽江市| 安庆市| 临泉县| 日照市| 尼木县| 宜春市| 秦安县|