用戶角色權限系統完整設計(基於shiro)

一:shiro簡介

1.1:shiro可以幫助我們完成:認證,授權,加密,會話管理,與web集成,緩存等。shiro不會去維護用戶沒維護權限。這些需要我們自己設計提供,然後通過想應的接口注入給shiro。


1.2:shiro的API簡單介紹
Authentication : 身份認證/登錄,驗證用戶是不是擁有想應的身份。
Authorization:授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用戶是否能做事情,常見的如,驗證某個用戶是否擁有某個角色,或者細粒度驗證某個用戶對某個資源是否具有某個權限。
Sessin Manager 會話管理,即用戶登陸後就是一次會話,在沒有退出之前,他的所有信息都在會話中;會話可以是普通javase環境,也可以是web環境。
Cryptography: 加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是銘文存儲。
Web Support : Web支持,可以非常容易的集成到web環境
Caching:緩存,比如用戶登陸後,其用戶信息,擁有的角色/權限不用每次去查,可以提高效率。
Concurrency:shiro支持多線程應用的併發驗證,即如在一個線程中開啓另一個線程,能把權限自動傳播過去;
Testing: 提供測試支持。
Run As 允許用戶假裝爲另一個用戶的身份進行訪問。
Remember Me 記住我,這是一個常見功能,即一次登陸後,下次再來的話就不用登錄了。


1.3:從應用程序角度解析shiro工作過程.
應用代碼直接交互對象Subject
Subject:主體,代表當前用戶。與當前應用交互的任何東西都是Subject,如網絡爬蟲,機器人等。所有Subject都綁定到SecurityManager,與Subject的所有交互都會委託給SecurityManager;可以把Subject認爲是一個門面;SecurityManager纔是實際執行者。
SecurityManager: 安全管理器;即所有與安全有關的操作都會與SecurityManager交互;且它管理者所有Subject;他是Shiro的核心,它負責後面介紹的其他組件進行交互。
Realm:域。Shiro從Realm獲取安全數據(用戶,角色,權限),就是說SecurityManager要驗證用戶身份,那麼他需要從Realm獲取想應得用戶進行比較以確定身份是否合法。;也需要才Realm得到用戶相應的角色/權限驗證用戶是否能進行操作。


1.4 最簡單的Shiro應用:
1、應用代碼通過Subject來進行認證和授權,而Subject又委託給SecurityManager;
2、我們需要給Shiro的SecurityManager注入Realm,從而讓SecurityManager能得到合法的用戶及其權限進行判斷。


1.5 從Shiro內部來看Shiro架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章