1. 程式人生 > >shrio學習過程的理解(1)

shrio學習過程的理解(1)

securityManager不管是從ini配置檔案還是從xml配置檔案都是從這些配置檔案中獲取
到他的屬性設定資訊,例如你設定一個user,設定一個realm實現,又在realm中實現一個
自己的驗證規則,等等,他都會是根據自己的內部呼叫順序去呼叫對應的實現,如果發現
你實現了就用你的,沒有發現就用自己預設的,


例如:從你的配置檔案中獲取到了一個使用者資訊,然後token傳進來,他就是用自己預設的
驗證規則去驗證登入,


再例如,我沒有衝你的配置檔案中獲取到使用者資訊,但是獲取到了一個realm,這個realm
還實現了驗證規則,那麼你把token傳給securityManager,他就去根據這個規則去驗證
能不能登入,


從目前來看,他的預設的驗證規則就是查詢設定給securityManager使用者資訊和你傳入的
token進行比對.如果你覆蓋了他的規則就肯定用你的,securityManager你給他舍不設定
使用者資訊就沒有關係了


那個多個realm的驗證和對應的驗證順序就不多說


從資料庫獲取使用者資訊進行校驗,即使用JdbcRealm來驗證
說白了,就是你傳給我一個身份資訊,我從資料庫裡面查詢是不是有這個資訊,當然,這個的
的前提就是你要給我配置好我去查詢哪一個資料庫,進一步,他有一套自己的查詢規則,
就是shiro自己定義的一套查詢語句,這個必須是可以換的,在對應的資料庫裡面建立自己
的表,然後重新定義查詢語句就可以了,我現在能想到的是直接繼承Jdbcrealm,然後重寫
對應的方法,簡單,粗暴


發現了嗎,就是在圍繞著securityManager在設定,這個比一定控制著校驗的順序,校驗的
介面標準,包括授權,也就是說,我們要了解一個系統的安全設定,看一下系統對security
的設定就可以了


授權
上面講了驗證,驗證了之後要幹嘛,當讓是授權了,不然你驗證了幹嘛,就是要給我說我能
不能幹,這是事情還是securityManager來幹,上面也說了,這個比控制著整個許可權流程,
繞不開啊,授權這有一點沒有搞懂,就是他的這個角色的名字從哪來,還有就是許可權控制,
難道我要在每個方法上上面加一個註解???這肯定很逗啊,繼續往下看
這裡看到一個關鍵點,說shiro不維護角色和許可權的,要應用自己維護,那就有這個可能,
通過註解給資源設定一個許可權名稱,然後通過配置去給使用者授予這種許可權,我勒個去,先看,
我先不吐槽,而且他的資源:操作這種授權這裡的資源說的可能是表,.....!我感覺這牛逼了,

相關推薦

shrio學習過程理解(1)

securityManager不管是從ini配置檔案還是從xml配置檔案都是從這些配置檔案中獲取到他的屬性設定資訊,例如你設定一個user,設定一個realm實現,又在realm中實現一個自己的驗證規則,等等,他都會是根據自己的內部呼叫順序去呼叫對應的實現,如果發現你實現了就

linux 核心學習過程1)-硬體特性和核心設計之間的聯絡

該貼用來作為自己學習linux核心的記錄和筆記,很多東西都是自己理解後整理的內容,各位看官若覺得有問題的地方,可以留言或自行查閱。 linux核心在設計的過程中很多都是依據硬體晶片特性來設計,晶片在設計的過程中很多時候需要保持相容性,這樣就留下了很多令人費解的概念,比如分段和分頁機制,

stm32+lwip的物聯網開發——學習過程1

注:本人拒絕重複教程內容,只寫下自認為自己有所工作的地方,哪怕只是很小的一點點。 十分歡迎大家與我討論,指出文中錯誤與不足之處。 2016.04.16下午13.23 由於一個IOT的專案,順理成章地學習stm32+lwip。本來先學stm32可能會好一些,

《深入理解C指針》學習筆記(1)--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char   C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供

我所理解的Vue——學習心得體會1(Vue對象)

vue 模板 welcom 模型 style 學習 認識 理解 內容 初學Vue,總結如下: 1、首先要區分html的dom和js的dom 2、html的dom是View的範疇,js的dom是Model的範疇。 3、vue這庫就是創建了偉大的new Vue()對象,把htm

git學習整理(1)git clone 理解

mail app font 文件 mas .cn gin xxxxx clone 1、git clone 的理解 git clone默認會把遠程倉庫整個給clone下來 ,只能clone遠程庫的master分支並在本地默認創建一個master分支 ,無法clone所

java之JVM學習--簡單理解編譯和運行的過程之概覽

層次 概覽 聲明 是否 class 異常處理器 語義 net ots java代碼編譯流程圖: java字節碼執行由JVM執行引擎完成 Java代碼編譯和執行的整個過程包含了以下三個重要的機制: Java源碼編譯機制 類加載機制 類執

「4+1視圖」學習理解

uml聲明:部分內容摘錄了簡書「橘色對白」作者的文章片段。 之前經常看到文章中提到「4+1視圖」,對其也有片面的理解,但一直沒有實踐過,不清楚其真正的作用,這兩天在業務需求分析中運用了其中的一部分,想談談自己的粗淺理解。 最近在調研「多租戶」實現方案時,看到簡友「橘色對白」的3篇關於多租戶架構的文章,其中

【Java】「深入理解Java虛擬機器」學習筆記(1) - Java語言發展趨勢

這本書寫的比較早,現在這些功能都已經不同程度的實現了。 1、模組化     JDK9之前的版本都是一個整體,使用者可能只需要使用一個小功能,但他不得不下載整個JDK。不能滿足定製化需求,顯然Java語言的發展因此大大受限。   所以,Sun公司在OpenJDK建立了一個Jigsaw(拼圖)的專案來推動模

CNN中feature map、卷積核、卷積核個數、filter、channel的概念解釋,以及CNN 學習過程中卷積核更新的理解

feature map、卷積核、卷積核個數、filter、channel的概念解釋 feather map的理解 在cnn的每個卷積層,資料都是以三維形式存在的。你可以把它看成許多個二維圖片疊在一起(像豆腐皮一樣),其中每一個稱為一個feature map。 feather map 是怎

Qt學習筆記(1) — 深入瞭解Hello World的建立過程

年初的時候就準備學習Qt了,因為工作原因被擱淺好久,現在開始學也不晚,以後每週更新2遍博文作為總結。 學過Windows開發的,會覺得Qt很親切,學起來不是很費勁(PS: 環境搭建比較簡單,本文不作說明),但是還得從Hello World開始一步步來。下面,筆者將用4種不同的方

機器學習雜記,主要記錄學習過程中的一些疑問和理解

一、 最近看tensorflow,試著寫 cnn 程式碼,其中的一個介面 : def conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1,

【ShaderLab學習】AlphaTest & AlphaBlend理解[1]

AlphaTest & AlphaBlend 前言 透明度測試:它採用一種“霸道極端”的機制,只要一個片元的透明度不滿足條件(通常是小於某個閾值),那麼它對應的片元就會被捨棄。被捨棄的片元將不會再進行任何處理,也不會對顏色緩衝產生任何影響;否則,就會

mono for android學習過程系列教程(1)

直接進入主題,關於mono for android的學習,首先配置好環境,如何配置環境,度娘谷歌一大堆,記得使用破解版。 我自己是百度“黑馬四期”傳智播客的視訊,裡面有破解版開發環境的軟體。 今天直接來上手記錄下自己學習mono for android的種種。 首先:新建好一個安卓專案,切記路徑不可有中

Lucene學習總結之七:Lucene搜尋過程解析(1)

一、Lucene搜尋過程總論 搜尋的過程總的來說就是將詞典及倒排表資訊從索引中讀出來,根據使用者輸入的查詢語句合併倒排表,得到結果文件集並對文件進行打分的過程。 其可用如下圖示: 總共包括以下幾個過程: IndexReader開啟索引檔案,讀取並開啟指向索引檔案的流。

網易公開課《Linux核心分析》學習心得-理解程序排程時機跟蹤分析程序排程與程序切換的過程

首先在核心程式碼中搜索schedule,發現以下結果 在core.c檔案中是 實驗 設定斷點 跟蹤schedule的程序 可以看到 struct task_struct *tsk = current; sched_subm

Git 學習過程中遇到的一些坑和自己的一些理解

Git 在向遠端倉庫提交時出錯 我們看到的很多的git教程中都會先教你如何新建github倉庫,但是這裡有一個坑,就是,新建倉庫時勾選了Initialize this repository with a README,即為倉庫初始化一個README.md檔案,但是如果這樣的

一些簡單的例子讓你在Java中能更好的學習理解迴圈結構(1)!

一、java中流程控制方式採用三種基本流程結構:順序結構,選擇(分支)結構,迴圈結構。   1、[if-else 結構]    if(1>2){     system.out.println("if條件成立時,執行的程式碼");   }else{     System.out.println("if條

PCA、LDA的參考學習理解、混亂、清晰的過程

部分資料來自他人部落格,基礎上進行理解 LDA參考 http://blog.csdn.net/warmyellow/article/details/5454943 LDA演算法入門 一. LDA演算法概述: 線性判別式分析(Linear Discriminant

Lucene學習總結之七:Lucene搜尋過程解析(1)轉

一、Lucene搜尋過程總論 搜尋的過程總的來說就是將詞典及倒排表資訊從索引中讀出來,根據使用者輸入的查詢語句合併倒排表,得到結果文件集並對文件進行打分的過程。 其可用如下圖示: 總共包括以下幾個過程: IndexReader開啟索引檔案,讀取並開啟指向索引檔案的流。