什麼是許可權管理:對使用者訪問系統進行控制,按照安全規則、安全策略控制使用者只能訪問被授權的資源,一般包含認證和授權兩部分。
許可權管理基本流程圖
使用者認證:驗證使用者身份的合法性,即使用者登入,常用的身份認證方法:1.帳號密碼 2.指紋 3.證書
使用者認證的相關概念
subject:主體,可以是使用者,也可以是程式來訪問我們的系統資源
principal:身份資訊(帳號),通常是唯一的,乙個主體可以擁有多個身份資訊,比如郵箱帳號,手機帳號,qq帳號等,但只有乙個主身份資訊(primary principal)
credential:憑證,可以是密碼、證書、指紋
使用者授權:簡單理解為訪問控制,具有某種資源對應的許可權才可以訪問該資源
使用者授權的相關概念
資源:resource,資源分為類資源(比如使用者資訊類、商品類)和例項資源(具體的id為01的使用者)
資源分為3個控制級別
1.匿名資源:不用登入就可以訪問的資源,比如首頁,登入頁,註冊頁等
2.公共資源:登入(身份認證)後可以訪問的資源,不用許可權,比如使用者個人中心
3.許可權資源:身份認證後還需要有相應的許可權,比如vip才可以訪問的資源
許可權:permission,對資源進行的操作,比如增刪改查
許可權模型
主體(賬號、密碼)
資源(資源名稱、訪問位址url)
許可權(許可權名稱、針對的資源id)
角色(角色名稱,比如管理員,普通使用者,vip使用者)
角色和許可權關係(角色id、許可權id)
主體和角色關係(主體id、角色id)
上圖常被稱為許可權管理的通用模型,不過企業在開發中根據系統自身的特點還會對上圖進行修改。
因為許可權模型與資源模型是一對一的關係,所以一般把它們合成一張表,即許可權(許可權名稱、資源名稱、資源訪問位址)
許可權控制兩種方式
1.基於角色的訪問控制(rbac role based access control)
系統**中實現:
//如果該user是部門經理則可以訪問if中的**
if(user.hasrole('部門經理'))
問題:角色針對人劃分的,人作為使用者在系統中屬於活動內容,如果該 角色可以訪問的資源出現變更,需要修改你的**了,比如:需要變更為部門經理和總經理都可以進行使用者報表檢視,**改為:
if(user.hasrole('部門經理') || user.hasrole('總經理') )
不易擴充套件維護,角色的許可權一變動就得修改**
2.基於資源的訪問控制(rbac resource based access control)
對於資源增減和角色許可權變更我們只需要通過後台管理平台增刪對應的資料庫表資料即可,不用修改**
對資源的訪問需要具有permission許可權,**可以寫為:
if(user.haspermission ('使用者報表檢視(許可權識別符號)'))
上邊的方法就可以解決使用者角色變更不用修改上邊許可權控制的**。
粗粒度許可權管理,對資源型別的許可權管理。資源型別比如:選單、url連線、使用者新增頁面、使用者資訊、類方法、頁面中按鈕,本質都是基於url
粗粒度許可權管理比如:超級管理員可以訪問戶新增頁面、使用者資訊等全部頁面。
部門管理員可以訪問使用者資訊頁面包括 頁面中所有按鈕。
細粒度許可權管理,對資源例項的許可權管理。資源例項就資源型別的具體化,比如:使用者id為001的修改連線,1110班的使用者資訊、行政部的員工。
細粒度許可權管理就是資料級別的許可權管理,基於資料行
細粒度許可權管理比如:部門經理只可以訪問本部門的員工資訊,使用者只可以看到自己的選單,大區經理只能檢視本轄區的銷售訂單。
打個斷點,下篇文章寫寫shiro的入門使用...
WEB專案後台許可權管理設計小案例
1.需求場景 後台管理系統選單許可權訪問控制 2.資料庫設計方案 1 基本表結構 tbl menu 選單表 資源表 tbl user 使用者表 tbl group 選單分組表 2 關聯關係 tbl user menu 使用者直接關聯選單表 tbl user group 使用者關聯選單分組表 tbl ...
web安全開發指南 許可權管理
1 訪問控制必須只能在伺服器端執行。2只通過 session 來判定使用者的真實身份,避免使用其它資料域的引數 比如來自 cookie hidden 域 form 和url 引數等 來做訪問控制。3對 web 應用伺服器進行安全配置以防止使用者對靜態檔案的無鑑權訪問 參考附錄 11.6 4 對每乙個...
web許可權設定
設定web目錄許可權chown r www www wwwroot othe 遞迴地將web目錄設定歸屬為www使用者 find www wwwroot othe type d exec chmod 755 d filename 如果 filename為目錄,則為真 find www wwwroot...