Shiro學習筆記

2021-09-07 18:05:13 字數 1794 閱讀 4059

shiro :許可權選單框架.

apache shiro是乙個強大而靈活的開源安全框架,它能夠乾淨利落地處理身份認證,授權,企業會話管理和加密。

使用者認證

使用者認證,使用者去訪問系統,系統要驗證使用者身份的合法性。最常用的使用者身份驗證的方法:1、使用者名稱密碼方式、2、指紋打卡機、3、基於證書驗證方法。。系統驗證使用者身份合法,使用者方可訪問系統的資源。

關鍵物件 

subject:主體,理解為使用者,可能是程式,都要去訪問系統的資源,系統需要對subject進行身份認證。

principal:身份資訊,通常是唯一的,乙個主體還有多個身份資訊,但是都有乙個主身份資訊(primary principal)

credential:憑證資訊,可以是密碼 、證書、指紋。

總結:主體在進行身份認證時需要提供身份資訊和憑證資訊。

使用者授權

使用者授權,簡單理解為訪問控制,在使用者認證通過後,系統對使用者訪問資源進行控制,使用者具有資源的訪問許可權方可訪問。

許可權模型

主體(賬號、密碼)

資源(資源名稱、訪問位址)

許可權(許可權名稱、資源id)

角色(角色名稱)

角色和許可權關係(角色id、許可權id)

主體和角色關係(主體id、角色id)

1.1.1許可權模型

主體(賬號、密碼)

資源(資源名稱、訪問位址)

許可權(許可權名稱、資源id)

角色(角色名稱)

角色和許可權關係(角色id、許可權id)

主體和角色關係(主體id、角色id)

如下圖:

通常企業開發中將資源和許可權表合併為一張許可權表,如下:

資源(資源名稱、訪問位址)

許可權(許可權名稱、資源id)

合併為:

許可權(許可權名稱、資源名稱、資源訪問位址)

上圖常被稱為許可權管理的通用模型,不過企業在開發中根據系統自身的特點還會對上圖進行修改,但是使用者、角色、許可權、使用者角色關係、角色許可權關係是需要去理解的。

配置jdbcrealm

value="select t.password from my_user t where t.username = ?" />

value="select a.rolename from my_user_role t left join my_role a on t.roleid = a.id where t.username = ? " />

value="select b.permission from my_role t left join my_role_permission a on t.id = a.role_id left join my_permission b on a.permission = b.id where t.rolename = ? " />

配置shiro註解模式

depends-on="lifecyclebeanpostprocessor" />

注意:在與springmvc整合時必須放在springmvc的配置檔案中。

shiro在註解模式下,登入失敗,與沒有許可權均是通過丟擲異常。並且預設並沒有去處理或者捕獲這些異常。在springmvc下需要配置捕獲相應異常來通知使用者資訊,如果不配置異常會丟擲到頁面

/unauthorized

/unauthenticated

shiro學習筆記

作為乙個要轉後端的人,不了解安全框架怎麼能行呢,最近看了些web專案很多都使用shiro,shiro到底好在 呢?本篇部落格僅作為個人的shiro學習歷程記錄。很多內容參考張開濤先生的 跟我學shiro教程 侵刪。shiro給人的印象是乙個簡單實用的安全框架,相比於spring security,沒...

Shiro學習筆記之Shiro加密

雜湊演算法一般用於生成資料的摘要資訊,是一種不可逆的演算法,一般適合儲存密碼之類的資料,常見的雜湊演算法如 md5 sha 等。一般進行雜湊時最好提供乙個 雜訊,這樣可以使破解密碼的難度變大。以下是md5加密演算法的乙個演示 public class tes 5 此介面提供加密密碼和驗證密碼的功能。...

Shiro 學習筆記(一) shiro簡介

apache shiro 是乙個安全框架。說白了,就是進行一下 許可權校驗,判斷下這個使用者是否登入了,是否有許可權去做這件事情。shiro 可以幫助我們完成 認證 授權 加密 會話管理 與web 整合 快取等。其基本功能點 如下圖 authentication 身份認證 登入,驗證使用者是不是擁有...