3 1shiro的許可權解析配置及其說明

2021-08-21 03:22:58 字數 2278 閱讀 4958

1.呼叫 subject.ispermitted*/hasrole*介面,其會委託給 securitymanager,而 securitymanager 接著會委託給 authorizer;

2.authorizer 是真正的授權者,會通過 permissionresolver 把字串轉換成相應的 permission 例項;在進行授權之前,其會呼叫相應的 realm 獲取 subject 相應的角色/許可權用於匹配傳入的角色/許可權;

3.authorizer 會判斷 realm 的角色/許可權是否和傳入的匹配,如果有多個 realm,會委託給modularrealmauthorizer進行迴圈判斷,如果匹配如 ispermitted*/hasrole* 會返回 true,否則返回 false 表示授權失敗。

一.modularrealmauthorizer進行多 realm 匹配流程時:

首先檢查相應的 realm 是否實現了實現了 authorizer;

如果實現了 authorizer,那麼接著呼叫其相應的 ispermitted*/hasrole* 介面進行匹配;如果有乙個 realm 匹配那麼將返回 true,否則返回 false。

二.如果 realm 進行授權的話,應該繼承 authorizingrealm,其流程是:

如果呼叫 hasrole*,則直接獲取 authorizationinfo.getroles() 與傳入的角色比較即可;首先如果呼叫如 ispermitted(「user:view」),首先通過permissionresolver將許可權字串轉換成相應的 permission 例項,預設使用wildcardpermissionresolver,即轉換為萬用字元的wildcardpermission

通過 authorizationinfo.getobjectpermissions() 得到 permission 例項集合;通過 authorizationinfo.getstringpermissions() 得到字串集合並通過 permissionresolver 解析為 permission 例項;然後獲取使用者的角色,並通過rolepermissionresolver解析角色對應的許可權集合(預設沒有實現,可以自己提供);

接著呼叫 permission.implies(permission p) 逐個與傳入的許可權比較,如果有匹配的則返回 true,否則 false。

可以根據自己的需要配置解析方式。

shiro.ini檔案

[main]

#自定義authorizer(多個realme解析)

authorizer=org.apache

.shiro

.authz

.modularrealmauthorizer

#自定義permissionresolver

#permissionresolver=org.apache.shiro.authz.permission.wildcardpermissionresolver

permissionresolver=com

.github

.shiro

.permission

.mypermissionresolver

authorizer.permissionresolver=$permissionresolver

#自定義rolepermissionresolver

rolepermissionresolver=com

.github

.shiro

.permission

.myrolepermissionresolver

authorizer.rolepermissionresolver=$rolepermissionresolver

securitymanager.authorizer=$authorizer

1.繼承permission介面並重寫

boolean implies(permission p);

2.繼承permissionresolver並重寫

permission resolvepermission(string permissionstring);

3.繼承rolepermissionresolver

collection resolvepermissionsinrole(string rolestring);

grafana的使用者及許可權的配置

在上幾篇文章中,已經在grafana中,配置了幾個dashboard。需要給開發人員檢視,但是我又不想讓開發人員,隨便更改dashboard中的配置。需要建立乙個唯讀賬號才行。點選新增使用者的圖示 點選invite 進行邀請 email or username 輸入使用者郵箱,注意 必須是郵箱格式。...

grafana的使用者及許可權的配置

在grafana中,配置了幾個dashboard,需要給開發人員檢視,但是又不想讓開發人員隨便更改dashboard中的配置。需要建立乙個唯讀賬號就行。點選新增使用者的圖示 點選invite 進行邀請 email or username 輸入使用者郵箱,注意 必須是郵箱格式。name 輸入使用者名稱...

webstorm配置less解析的方法及注意事項

一 準備 二 配置步驟 1 安裝js解析器node.js。直接下一步就ok了。2 將npm壓縮包解壓,找到裡面的lessc.cmd檔案,放到c盤下乙個沒有中文路徑的目錄下,我們假如是 c xampp htdocs tools npm 3 3.1 開啟webstorm file settings to...