關於shiro安全框架概述與示例1

Apache Shiro(讀作“sheeroh”,即日語“城”)是一個開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

Shiro的前身是JSecurity。

2004年,Les Hazlewood和Jeremy Haile創辦了Jsecurity。當時他們找不到適用於應用程序級別的合適Java安全框架,同時又對JAAS非常失望。2004年到2008年期間,JSecurity託管在SourceForge上,貢獻者包括Peter Ledbrook、Alan Ditzel和Tim Veil。

2008年,JSecurity項目貢獻給了Apache軟件基金會(ASF),並被接納成為Apache Incubator項目,由導師管理,目標是成為一個頂級Apache項目。期間,Jsecurity曾短暫更名為Ki(讀作“Key”),隨後因商標問題被社群更名為“Shiro”。

隨後項目持續在Apache Incubator中孵化,並增加了貢獻者Kalle Korhonen。2010年7月,Shiro社區發佈了1.0版,隨後社區創建了其項目管理委員會,並選舉Les Hazlewood為主席。2010年9月22日,Shrio成為Apache軟件基金會的頂級項目

Shiro認證:

創建SecurityManager--主動提交認證--SecurityManager認證--Authenticator認證--Realm認證

示例:創建一個maven項目並引入shior核心jar

關於shiro安全框架概述與示例1

認證流程code:

關於shiro安全框架概述與示例1

測試:

關於shiro安全框架概述與示例1

輸入錯誤的用戶名或者密碼 再次測試:

關於shiro安全框架概述與示例1

關於shiro安全框架概述與示例1

這是登陸之後測試結果,如果我們退出登陸狀態,再次測試:

關於shiro安全框架概述與示例1

創建SecurityManager--主動授權--SecurityManager授權--Authorizer授權--Realm獲取授權數據

基本代碼不變,就是為用戶添加一個管理員身份的標識(可以擁有多個身份標識)

關於shiro安全框架概述與示例1

測試:

關於shiro安全框架概述與示例1

多角色權限的驗證:

關於shiro安全框架概述與示例1

關於自定義Realm

內置Realm

iniRealm身份示例:

resouces目錄下創建自定義ini文件:(maven創建的項目,classpath指的就是resources目錄)

關於shiro安全框架概述與示例1

代碼:

關於shiro安全框架概述與示例1

權限管理示例:

關於shiro安全框架概述與示例1

關於shiro安全框架概述與示例1

關於JDBCRealm示例:

引入相關的mysql 與數據源依賴

關於shiro安全框架概述與示例1

測試代碼

關於shiro安全框架概述與示例1

JDBCRealm源碼:

關於shiro安全框架概述與示例1

這種默認的驗證表名是固定的,實際開放過程中,一般不會與之相同

自定義身份驗證

關於shiro安全框架概述與示例1

權限查詢設置

關於shiro安全框架概述與示例1

自定義realm(創建一個類繼承AuthorizingRealm)

關於shiro安全框架概述與示例1

關於shiro加密

創建MD5加密算法

關於shiro安全框架概述與示例1

在自定義realm設置算法

關於shiro安全框架概述與示例1

算出123456 加密後的值(實際上密碼保存到數據庫的時候,應該是被加密的,為了方便,直接省略這個過程)

關於shiro安全框架概述與示例1

然後這樣加密感覺力度還是不夠,我們給密碼加鹽

密碼加密時使用salt

關於shiro安全框架概述與示例1

設置salt

關於shiro安全框架概述與示例1

這樣就完成了,shiro做加密的話,總的來說過程還是蠻簡單的。


分享到:


相關文章: