
看博主系列
以下是學(xué)習(xí)筆記:

Authentication:身份認(rèn)證,驗(yàn)證用戶是不是已經(jīng)擁有相應(yīng)的身份;
Authorization:授權(quán),即權(quán)限驗(yàn)證,驗(yàn)證某個(gè)已認(rèn)證的用戶是否擁有某個(gè)權(quán)限:也就是判斷用戶能不能做這個(gè)事情;
Session Manager:會(huì)話管理,即用戶登錄一次就是一次會(huì)話,在沒(méi)有退出之前,他所有會(huì)話的信息都保存會(huì)話中;
Cryptography:加密,保護(hù)數(shù)據(jù)的安全性;
Web Support:Web支持,可以很容易集成到web環(huán)境;
Concurrency;shiro支持多線程應(yīng)用的并發(fā)驗(yàn)證,即在一個(gè)線程中開(kāi)啟另一個(gè)線程,能把去權(quán)限自動(dòng)傳播過(guò)去;
Testing: 提供測(cè)試支持;
Run As: 允許一個(gè)用戶假裝另一個(gè)用戶的身份訪問(wèn);
Remember Me: 記住我,即一次登錄之后,下次登陸再來(lái)的話不用在登陸;
shiro不會(huì)去維護(hù)用戶,維護(hù)權(quán)限;這些需要我們自己去設(shè)計(jì)/提供;然后通過(guò)相應(yīng)的接口注入給shiro

直接與代碼交互的對(duì)象是Subject,也就是說(shuō)Shiro對(duì)外API的核心是Subject
Subject: 主體,代表當(dāng)前“用戶”,所有的Subject都綁定到SecurityManager,都委托給SecurityManager, SUbject相當(dāng)于門面,而SecurityManager才是實(shí)際的執(zhí)行者;
SecurityManager:我是安全管理器,所有有安全相關(guān)的操作,都會(huì)交給我來(lái)處理,我管理著所有的Subject,我是核心,我負(fù)責(zé)與其他組件進(jìn)行交互,你也可以你把我比作springmvc里面的前端控制器,
Realm: 我叫域,Shiro要從我這里獲取安全數(shù)據(jù)(用戶,角色,權(quán)限),也就是說(shuō)SecurityManager要驗(yàn)證身份,需要從我這里獲取相應(yīng)用戶的身份,也需要從我這里獲取權(quán)限,可以把我 看作安全數(shù)據(jù)源;
從上面也可以看出,Shiro不提供維護(hù)用戶和權(quán)限,而是用過(guò)Realm讓開(kāi)發(fā)人員自己注入;

Subject: 主體
SecurityManager:心臟
Authentication:認(rèn)證器
Authorizer: 授權(quán)器
Realm:可以有一個(gè)或者多個(gè),安全的實(shí)體數(shù)據(jù)源
SessionManager: Shiro并不僅僅可以用在Web環(huán)境,也可以用在如普通的JavaSE環(huán)境、EJB等環(huán)境
SessionDao:
CacheManager:緩存控制器 ,放到 緩存中可以提高訪問(wèn)性能;
Cryptography: 密碼模塊;