Shiro基礎

Demo下載:前端

http://yunpan.cn/c3eNWcJini8QT  訪問密碼 f44d (注意:charpter2是身份驗證,charpter3是受權)sql

文檔下載:數據庫

http://yunpan.cn/c3eN8EAvLT4z9  訪問密碼 d716緩存

注意:這裏是用Maven作的,因此不想用Maven下載對應jar就能夠了。安全

jar下載:http://yunpan.cn/c3ei5KkfmwcNI  訪問密碼 27d9網絡

sql下載:http://yunpan.cn/c3eip45Pa38us  訪問密碼 9c3a多線程

一、Authentication :身份認證/登陸,驗證用戶是否是擁有相應的身份;
二、Authorization :受權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用戶是否能作事情,常見的如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某個資源是否具備某個權限;
三、Session Manager :會話管理,即用戶登陸後就是一次會話,在沒有退出以前,它的全部信息都在會話中;會話能夠是普通 JavaSE 環境的,也能夠是如 Web 環境的;
四、Cryptography :加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲;
五、Web Support :Web 支持,能夠很是容易的集成到 Web 環境;
六、Caching:緩存,好比用戶登陸後,其用戶信息、擁有的角色/權限沒必要每次去查,提升效率;
七、Concurrency :shiro 支持多線程應用的併發驗證,即如在一個線程中開啓另外一個線程,能把權限自動傳播過去;
八、Testing :提供測試支持;
九、Run As :容許一個用戶僞裝爲另外一個用戶(若是他們容許)的身份進行訪問;
十、Remember Me :記住我,這個是很是常見的功能,即一次登陸後,下次再來的話不用登陸了。
注意:
記住一點,Shiro  不會去維護用戶、維護權限;這 些須要咱們 本身去 設計/ 提供 ; 而後經過
相應的 接口注入給 給 Shiro
一、Subject :主體,表明了當前「用戶」,這個用戶不必定是一個具體的人,與當前應用交互的任何東西都是 Subject,如網絡爬蟲,機器人等;即一個抽象概念;全部 Subject 都綁定到 SecurityManager,與 Subject 的全部交互都會委託給 SecurityManager;能夠把 Subject 認爲是一個門面;SecurityManager 纔是實際的執行者;
二、SecurityManager :安全管理器;即全部與安全有關的操做都會與 SecurityManager 交互;且它管理着全部 Subject;能夠看出它是 Shiro 的核心,它負責與後邊介紹的其餘組件進行交互,若是學習過 SpringMVC,你能夠把它當作 DispatcherServlet 前端控制器;
三、Realm: : 域, Shiro 從從 Realm 獲取安全數據 (如用戶、 角色、 權限) , 就是說 SecurityManager
要驗證用戶身份, 那麼它須要從 Realm 獲取相應的用戶進行比較以肯定用戶身份是否合法; 
四、SessionDAO: : DAO 你們都用過, 數據訪問對象, 用於會話的 CRUD, 好比咱們想把 Session保存到數據庫,那麼能夠實現本身的 SessionDAO,經過如 JDBC 寫到數據庫;好比想把Session 放到 Memcached 中,能夠實現本身的 Memcached SessionDAO;另外 SessionDAO
中可使用 Cache 進行緩存,以提升性能;
 身份驗證
一、principals:身份,即主體的標識屬性,能夠是任何東西,如用戶名、郵箱等,惟一便可。一個主體能夠有多個 principals, 但只有一個 Primary principals, 通常是用戶名/密碼/手機號。
二、credentials:證實/憑證,即只有主體知道的安全值,如密碼/數字證書等。
受權
規則: 「資源標識符:操做:對象實例 ID」 即對哪一個資源的哪一個實例能夠進行什麼操做。
其默認支持通配符權限字符串,「:」表示資源/操做/實例的分割;「,」表示操做的分割;
「*」表示任意資源/操做/實例。 
例子:
如「user:view」等價於「user:view:*」;而「organization」等價於「organization:*」或者
「organization:*:*」。能夠這麼理解,這種方式實現了前綴匹配。
另外如「user:*」能夠匹配如「user:delete」、「user:delete」能夠匹配如「user:delete:1」、
「user:*:1」能夠匹配如「user:view:1」、「user」能夠匹配「user:view」或「user:view:1」
等。即*能夠匹配全部,不加*能夠進行前綴匹配;可是如「*:view」不能匹配
「system:user:view」,須要使用「*:*:view」,即後綴匹配必須指定前綴(多個冒號就須要
多個*來匹配)

身份驗證:併發

受權:性能

配置文件:學習

配置前綴意義:[]

相關文章
相關標籤/搜索