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 身份認證 登入,驗證使用者是不是擁有...