99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

前后分離的shiro權限

前陣子在前后端分離項目中集成shiro項目,折騰了一下子,參考了網上一些博客,發現大多都還是之前傳統的模式,并不適用于前后端分離結構。今天抽空整理了下demo,方便以后使用以及后來人參考。

婺源ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯建站的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

一、springboot中集成shiro框架

關于shior框架的介紹可以參考這篇,需要引入相關jar如下:

????<!--shiro核心jar?from?官網?www.1b23.com-->
????<dependency>
????????<groupId>org.apache.shiro</groupId>
????????<artifactId>shiro-spring</artifactId>
????????<version>1.4.0</version>
????</dependency>
????<!--實現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中設置監聽器完成

<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?應用的入口?。

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


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

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

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

EnvironmentLoader的功能:

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

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

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

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

二、前后端分離中遇到的坑
  1. 服務端需開啟跨域支持

  2. 只返回Json,不要重定向

  3. OPTIONS Request 不進行鑒權操作

分享標題:前后分離的shiro權限
網頁地址:http://www.yijiale78.com/article26/jcedjg.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化網站維護網站營銷網站設計做網站網站建設

廣告

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

營銷型網站建設