Redis 簡介
Redis 是完全開源免費的,遵守BSD協(xié)議,是一個高性能的key-value數(shù)據(jù)庫。
Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點:
Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用。
Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。
Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
Shiro是什么
Shiro是一個Java平臺的開源權(quán)限框架,用于認證和訪問授權(quán)。具體來說,滿足對如下元素的支持:
用戶,角色,權(quán)限(僅僅是操作權(quán)限,數(shù)據(jù)權(quán)限必須與業(yè)務需求緊密結(jié)合),資源(url)。
用戶分配角色,角色定義權(quán)限。
訪問授權(quán)時支持角色或者權(quán)限,并且支持多級的權(quán)限定義。
Q:對組的支持?
A:shiro默認不支持對組設置權(quán)限。
Q:是否可以滿足對組進行角色分配的需求?
A:擴展Realm,可以支持對組進行分配角色,其實就是給該組下的所有用戶分配權(quán)限。
Q:對數(shù)據(jù)權(quán)限的支持? 在業(yè)務系統(tǒng)中定義?
A:shiro僅僅實現(xiàn)對操作權(quán)限的控制,用于在前端控制元素隱藏或者顯示,以及對資源訪問權(quán)限進行檢查。數(shù)據(jù)權(quán)限與具體的業(yè)務需求緊密關聯(lián),shiro本身無法實現(xiàn)對數(shù)據(jù)權(quán)限的控制。
Q:動態(tài)權(quán)限分配?
A:擴展org.apache.shiro.realm.Realm,支持動態(tài)權(quán)限分配。
Q:與Spring集成?
A:可以支持與Spring集成,shiro還支持jsp標簽。
在shiro架構(gòu)中,有3個最主要的組件:Subject,SecurityManager,Realm。
Subject本質(zhì)上就是當前訪問用戶的抽象描述。
SecurityManager是Shiro架構(gòu)中最核心的組件,通過它可以協(xié)調(diào)其他組件完成用戶認證和授權(quán)。實際上,SecurityManager就是Shiro框架的控制器。
Realm定義了訪問數(shù)據(jù)的方式,用來連接不同的數(shù)據(jù)源,如:LDAP,關系數(shù)據(jù)庫,配置文件等等。