Shiro安全框架簡(jiǎn)介
Apache的強(qiáng)大靈活的開源安全框架。
認(rèn)證、授權(quán)、企業(yè)會(huì)話管理、安全加密。
Shrio 與 Spring Security
簡(jiǎn)單靈活 復(fù)雜笨重
可脫離Spring 不可脫離spring
粒度較粗 粒度更細(xì)
認(rèn)識(shí)Shiro的整體架構(gòu),各組件的概念
1)Authenticator: 認(rèn)證和登出
2)Authorizer 賦予我們主體有哪一些權(quán)限
3)Session Manager 一套session管理機(jī)制
4)Session Dao 提供了 Session 的增刪改查操作
5)Cache Manager 緩存管理:緩存角色數(shù)據(jù)和權(quán)限數(shù)據(jù)
6)Pluggable Realms 數(shù)據(jù)庫(kù)和數(shù)據(jù)源之間的橋梁;獲取認(rèn)證數(shù)據(jù)、權(quán)限數(shù)據(jù)來獲取
7)Cryptography 數(shù)據(jù)加密

Shiro認(rèn)證,授權(quán)的過程
Shiro認(rèn)證過程:
1)創(chuàng)建SecurityMananger對(duì)象,構(gòu)建SecurityMananger 環(huán)境
2)主體提交認(rèn)證請(qǐng)求
3)SecurityMananger認(rèn)證
4)通過Authenticator認(rèn)證
5)Realm 驗(yàn)證
Shiro授權(quán)過程:
- 創(chuàng)建SecurityMananger 管理類
- 主體授權(quán)
- SecurityManager 授權(quán)
- Authorizer 授權(quán);
- Realm 獲取角色權(quán)限數(shù)據(jù);
Shiro自定義的Realm(領(lǐng)域、范圍),Filter
內(nèi)置Realm:
IniRealm
JdbcRealm
創(chuàng)建jdbc默認(rèn)表:
DROP TABLE IF EXISTS users;
create table users(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用戶表主鍵',
username VARCHAR(20) COMMENT '用戶名',
password VARCHAR(100) COMMENT '密碼'
) charset=utf8 ENGINE=InnoDB;
DROP TABLE IF EXISTS user_roles;
create table user_roles(
id bigint PRIMARY KEY auto_increment comment '角色表主鍵',
username VARCHAR(20) comment '用戶名',
role_name VARCHAR(20) comment '角色名稱'
) charset=utf8 ENGINE=InnoDB;
DROP TABLE IF EXISTS roles_permissions;
create table roles_permissions(
id bigint PRIMARY KEY auto_increment COMMENT '權(quán)限表主鍵',
role_name VARCHAR(20) COMMENT '角色名稱' ,
permission VARCHAR(20) COMMENT '權(quán)限名稱'
) charset=utf8 ENGINE=InnoDB;
使用自己的表:
DROP TABLE IF EXISTS test_user;
create table test_user(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用戶表主鍵',
username VARCHAR(20) COMMENT '用戶名',
password VARCHAR(20) COMMENT '密碼'
) charset=utf8 ENGINE=InnoDB;
DROP TABLE IF EXISTS test_user_role;
create table test_user_role(
username VARCHAR(20) COMMENT '用戶名',
user_role VARCHAR(20) COMMENT '角色'
) charset=utf8 ENGINE=InnoDB;
自定義的Realm
Shiro 加密
Shiro 散列配置
HashedCredentialsMatcher
自定義Realm使用散列
鹽的使用
Shiro Session管理
SessionManager
SessionDAO 實(shí)現(xiàn)session增刪改查
Redis 實(shí)現(xiàn)Session共享
Redis 實(shí)現(xiàn)Session共享存在的問題
Shiro 緩存管理
CacheManager
Cache
Redis實(shí)現(xiàn)CacheMananger
Shiro集成Spring[https://github.com/peijinliang/SpringShiro]
shiro-web 項(xiàng)目