1. 程式人生 > >SHIRO工作流程及原理及在Spring中整合

SHIRO工作流程及原理及在Spring中整合

1.最近接觸了Shiro這一安全的框架:
這可以幫我們完成:認證、授權、加密、會話管理、與Web整合、快取等。
Shiro可以基本功能分為如下:

這裡寫圖片描述
Authentication:身份認證/登入,驗證使用者是不是擁有相應的身份;

Authorization:授權,即許可權驗證,驗證某個已認證的使用者是否擁有某個許可權;即判斷使用者是否能做事情,常見的如:驗證某個使用者是否擁有某個角色。或者細粒度的驗證某個使用者對某個資源是否具有某個許可權;
Session Manager:會話管理,即使用者登入後就是一次會話,在沒有退出之前,它的所有資訊都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;
Cryptography:

加密,保護資料的安全性,如密碼加密儲存到資料庫,而不是明文儲存;
**Web Support:**Web支援,可以非常容易的整合到Web環境;
Caching:快取,比如使用者登入後,其使用者資訊、擁有的角色/許可權不必每次去查,這樣可以提高效率;
**Concurrency:**shiro支援多執行緒應用的併發驗證,即如在一個執行緒中開啟另一個執行緒,能把許可權自動傳播過去;
Testing:提供測試支援;
Run As:允許一個使用者假裝為另一個使用者(如果他們允許)的身份進行訪問;
Remember Me:記住我,這個是非常常見的功能,即一次登入後,下次再來的話不用登入了。授權,即許可權驗證,驗證某個已認證的使用者是否擁有某個許可權;即判斷使用者是否能做事情,常見的如:驗證某個使用者是否擁有某個角色。或者細粒度的驗證某個使用者對某個資源是否具有某個許可權;
Session Manager:
會話管理,即使用者登入後就是一次會話,在沒有退出之前,它的所有資訊都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;
Cryptography:加密,保護資料的安全性
**Web Support:**Web支援,可以非常容易的整合到Web環境;
Shiro的工作流程(應用程式角度):
這裡寫圖片描述

Subject:當前應用互動的任何東西,都是Subject,代表“當前使用者”。

SecutiryManager :(安全管理器)所有與安全有關的操作都會和SecurityManager互動;它管理著所有Subject;是Shiro的核心,它負責與後邊介紹的其他元件進行互動 。可以將它當成前端控制器。

Realm :(安全資料來源) SecurityManager要驗證使用者身份時,那麼它需要從Realm獲取相應的使用者進行比較以確定使用者身份是否合法;也需要從Realm得到使用者相應的角色/許可權進行驗證使用者是否能進行操作。

總結:
1、應用程式碼通過Subject來進行認證和授權,而Subject又委託給SecurityManager;

2、我們需要給Shiro的SecurityManager注入Realm,從而讓SecurityManager能得到合法的使用者及其許可權進行判斷。

這裡寫圖片描述

在Spring中的主要配置:
1.在web.xml中配置過濾器
這裡寫圖片描述
2.在spring的配置檔案applicationContext中配置:securityManager,圖為自定義的Realm校驗。
這裡寫圖片描述
3.在applicationContext中配置 shiroFilter(注意:id一定與web.xml中filter的name一致)
這裡寫圖片描述

相關推薦

SHIRO工作流程原理Spring整合

1.最近接觸了Shiro這一安全的框架: 這可以幫我們完成:認證、授權、加密、會話管理、與Web整合、快取等。 Shiro可以基本功能分為如下: Authentication:身份認證/登入,驗證使用者是不是擁有相應的身份; Authorizatio

Spring IOC/BeanFactory/ApplicationContext的工作流程/實現原理/初始化/依賴注入原始碼詳解

Spring的工作流程/實現原理之基石IOC/BeanFactory/ApplicationContext 更新1:2017/11/23更新2:2018/1/30(截圖)一、什麼是IOC容器?IOC(Inversion of Control)、控制反轉亦稱依賴注入.IOC容器

Druid連線池監控在spring的配置

Druid連線池及監控在Spring配置如下: <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init

Android View 的工作流程原理

生成 它的 isl canvas mask lis mat cep 少見 參考資料 << Android 開發藝術探索 >> 前言 在日常開發中,我們每天都在和各種 View 打交道,比如TextView,Button等,我們直接拿過來就可以使用

struts2核心工作流程原理

1. Struts2架構圖 這是Struts2官方站點提供的Struts 2 的整體結構。2. Struts2部分類介紹 這部分從Struts2參考文件中翻譯就可以了。 ActionMapper         ActionMapper其實是HttpServletRequ

3.Shiro工作流程

*不涉及原始碼,只是執行流程繼續第2部分,此時效果,可以正常訪問login.jsp頁面,其餘頁面或不存在的頁面無法訪問,並會重定向回login.jsp頁面在web.xml中配置的ShiroFilter是程式的入口,因為可以攔截所有資源(*/)工作流程:1.因為在web.xml

SSM工作流程原理詳解

 自學ssm->springboot->springcloud,所以很多東西會用但理解較淺,所以現在從最開始的ssm開始進行對原理以及執行過程的整理知識歸納,若有錯誤感謝指正。 Spring  Spring執行原理 1. Data Access/Integration(資料訪

Spring整合Cage,實現驗證碼功能

ger 類型 body match exce sub pom esp rec 1.pom.xml中添加Cage依賴。 <dependency> <groupId>com.github.cage</groupId

Spring 整合log4j日誌框架

構建專案,加入log4j日誌框架 在pom.xml加入以下依賴: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId>

Spring整合Mybatis分頁外掛PageHelper

1. 使用Maven方式引入分頁外掛 在pom.xml中新增如下依賴: <dependency> <groupId>com.github.pagehelper</groupId> <artif

Spring框架(JavaEE開發進階Ⅲ)—在Spring整合Hibernate

一、主要內容1、Hibernate概覽2、宣告Hibernate的Session工廠3、構建不依賴於Spring的Hibernate程式碼二、前言1、應用程式越複雜,對持久化需求隨之要求更高1)延遲載入(lazy loading)2)預先抓取(Eager fetching)3

Spring整合Hibernate連線MySQL資料庫配置

Spring配置檔案applicationContext.xml中加入資料庫連線配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DT

HTTP協議報文、工作原理Java的HTTP通信技術詳解

tor 報文 buffered mod protoc 禁止 ans 請求報文 客戶端 博客園 首頁 新隨筆 聯系 管理 訂閱

node.js基本工作原理流程

實例 I/O 同步問題 code 本地 https 事情 sans ready 概述 Node.js是什麽 Node 是一個服務器端 JavaScript 解釋器,用於方便地搭建響應速度快、易於擴展的網絡應用。Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量

【Ceph系列01】Ceph的工作原理流程

-o 尋址 ofo color proc 分享圖片 tac ges sha 首先我們了解一下Ceph系統中的尋址流程,如下圖所示: 本文部分參考來自 http://www.csdn.net/article/2014-04-08/2819192-ceph-swift-on

JSP工作流程執行原理

JSP起源 在很多動態網頁中,絕大部分內容都是固定不變的,只有區域性內容需要動態產生和改變。 如果使用Servlet程式來輸出只有區域性內容需要動態改變的網頁,其中所有的靜態內容也需要程式設計師用Java程式程式碼產生,整個Servlet程式的程式碼將非常臃腫,編寫和維護都將非常困難。 對大

HTTP協議報文、工作原理Java的HTTP通訊技術詳解

一、web及網路基礎       1、HTTP的歷史            1.1、HTTP的概念:         &nb

Java框架Mybatis的工作流程原理

Mybatis簡介:        MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置

Node Js 基本工作原理流程詳解

1,專案前期準備: 以express 框架為例 npm i express-generator -g //全域性安裝express框架 express -e //生成express應用骨架 npm i //安裝依賴 npm start //在3000埠監聽 拓展

CD4017 十進位制計數器工作原理應用大全(不斷更新......)

CD4017 十進位制計數器工作原理及應用大全 CD4017是一種十進位制計數器/脈衝分配器。具有10個譯碼輸出端,CP、CR、INH輸入端。計數輸入端CP的斯密特觸發器具有脈衝整形功能,對輸入時鐘脈衝