Spring-Shiro 筆記

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ù)加密

image.png

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)過程:

  1. 創(chuàng)建SecurityMananger 管理類
  2. 主體授權(quán)
  3. SecurityManager 授權(quán)
  4. Authorizer 授權(quán);
  5. 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)目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容